我正在使用 Codeigniter 开发一个系统!我只想知道,如果某人知道我用来生成加密哈希的功能和步骤,是否有可能找出密码是什么?现在我必须生成我的哈希字符串是:
$pass = str_split($password, 2);
$hashPass = '';
foreach($pass as $p){
$hashPass .= md5($p);
}
我正在使用 Codeigniter 开发一个系统!我只想知道,如果某人知道我用来生成加密哈希的功能和步骤,是否有可能找出密码是什么?现在我必须生成我的哈希字符串是:
$pass = str_split($password, 2);
$hashPass = '';
foreach($pass as $p){
$hashPass .= md5($p);
}
您的散列方法不是散列,这是非常糟糕的主意..您必须散列您的密码字符串!
这是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 年没有使用 Bcrypt,那么密码将很容易受到攻击。如果在“加密”方面有任何等级的话,你目前所做的就是相当低的等级。
我在这个类中使用 CodeIgniter 和 Bcrypt
然后你所要做的就是调用这个文件 bcrypt.php 然后类名是:
class Bcrypt extends CI_Controller {............}
请记住,尽管 php 5.5 > 将支持新的密码哈希函数,它将自动使用 Bcrypt,直到出现更强大的方法。信息在这里
祝你好运,最终停止尝试推出自己的“加密/散列”算法/方法/灾难。这样做可能会使您的客户容易受到攻击。
如果他们知道实际的加密方法,他们就更容易破解它。
例如,对于所有散列,都存在彩虹表,它允许快速恢复密码。这就是为什么散列密码通常会被加盐的原因。
str_split
另一方面,据我所知,它不是哈希函数。
查看 Ion_auth http://benedmunds.com/ion_auth/并使用 bcrypt 选项 - 密码散列不是尝试自己创建的东西。