php MD5中的密码哈希

时间:2014-07-18 09:01:29

标签: php encryption hash md5

有谁能告诉我这有什么不对吗?

function hashmyshit($pass){

        for ( $i = 0; $i < 1000; $i++ ){
            MD5($pass);
        }
        return $pass;
}

以及如何多次迭代密码散列过程。

3 个答案:

答案 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进行散列密码?

How do you use bcrypt for hashing passwords in PHP?