-1

我正在使用 Codeigniter 开发一个系统!我只想知道,如果某人知道我用来生成加密哈希的功能和步骤,是否有可能找出密码是什么?现在我必须生成我的哈希字符串是:

$pass = str_split($password, 2);
$hashPass = '';
foreach($pass as $p){
    $hashPass .= md5($p);
}
4

4 回答 4

1

您的散列方法不是散列,这是非常糟糕的主意..您必须散列您的密码字符串!

这是2个非常简单的功能..

function hash_my_pass($password){
    return generate_hash($password);
}

function generate_hash($password){
    return hash('sha256', $password . substr($password, 1, 3));
    # In this case I put to hash $password  + some substr of the password.. 
    # Its good when you hash pass to add something secret..
}

function check_password($password, $hashed_pass){
    return generate_hash($password) == $hashed_pass;
}

$password = '123456789';
$hash = hash_my_pass($password);    
echo $hash;#this hash you must keep at your DB.   
#when user login just compare his pass with the hash from your DB
var_dump(check_password($password, $hash));
于 2013-04-07T08:28:57.780 回答
1

老实说,如果您在 2013 年没有使用 Bcrypt,那么密码将很容易受到攻击。如果在“加密”方面有任何等级的话,你目前所做的就是相当低的等级。

我在这个类中使用 CodeIgniter 和 Bcrypt

然后你所要做的就是调用这个文件 bcrypt.php 然后类名是:

class Bcrypt extends CI_Controller {............}

请记住,尽管 php 5.5 > 将支持新的密码哈希函数,它将自动使用 Bcrypt,直到出现更强大的方法。信息在这里

祝你好运,最终停止尝试推出自己的“加密/散列”算法/方法/灾难。这样做可能会使您的客户容易受到攻击。

于 2013-04-07T14:43:12.033 回答
0

如果他们知道实际的加密方法,他们就更容易破解它。

例如,对于所有散列,都存在彩虹表,它允许快速恢复密码。这就是为什么散列密码通常会被加盐的原因。

str_split另一方面,据我所知,它不是哈希函数。

于 2013-04-07T08:16:54.617 回答
0

查看 Ion_auth http://benedmunds.com/ion_auth/并使用 bcrypt 选项 - 密码散列不是尝试自己创建的东西。

于 2013-04-07T12:57:24.223 回答