有谁能告诉我这有什么不对吗?
function hashmyshit($pass){
for ( $i = 0; $i < 1000; $i++ ){
MD5($pass);
}
return $pass;
}
以及如何多次迭代密码散列过程。
答案 0 :(得分:5)
您应该使用:
$pass = md5($pass);
而不是
MD5($pass);
但事实上,你想要达到什么目的?你为什么要在md5已经完成的字符串上多次执行md5?目的是什么?如果您只是想安全加密密码,则应使用password_hash()函数选择用户更好的加密方法。
多次使用相同的加密功能甚至可能导致攻击者更容易进入您的系统,因此您不应该这样做。
答案 1 :(得分:2)
因此,如果您想将密码哈希1000次,那么您可以这样做:
function hashmyshit($pass){
$password = $pass;
for ( $i = 0; $i < 1000; $i++ ){
$password = md5($password);
}
return $password;
}
之前您尝试将相同的 $ pass 哈希值1000次。 但正如@MarcinNabiałek所说,这不是保护该方法的合适方法,您应该使用内置加密。
答案 2 :(得分:0)
由于算法中存在许多加密缺陷,以及Philipp在下面的帖子中详细阐述的其他明显原因,我强烈反对使用MD5。
https://security.stackexchange.com/questions/52461/how-weak-is-md5-as-a-password-hashing-function
尝试 BCrypt 而不是
Andrew Moore在这篇文章中解释了如何在PHP中使用bcrypt进行散列密码?