繁体   English   中英

php MD5中的密码散列

[英]Password hashing in php MD5

谁能告诉我这有什么问题吗?

function hashmyshit($pass){

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

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

你应该使用:

$pass = md5($pass);

代替

MD5($pass);

但事实上,你想达到什么目的? 为什么要在 md5 已经完成的字符串上多次执行 md5? 目的是什么? 如果您只是想安全地加密密码,您应该使用password_hash()函数选择用户更好的加密方法。

多次使用相同的加密功能甚至可能导致攻击者更容易进入您的系统,因此您不应该这样做。

因此,如果您想对密码进行 1000 次散列,那么您可以这样做:

function hashmyshit($pass){
    $password = $pass;
    for ( $i = 0; $i < 1000; $i++ ){
        $password = md5($password);
    }
    return $password;
}

以前,您试图将相同的$pass散列 1000 次。 但正如@Marcin Nabiałek 所说,这不是保护密码的适当方法,您应该使用内置加密。

我强烈避免使用 MD5,因为在算法中发现了许多加密弱点,并且出于其他明显的原因,Philipp 在下面的帖子中详细说明了这些原因;

https://security.stackexchange.com/questions/52461/how-weak-is-md5-as-a-password-hashing-function

试试BCrypt

Andrew Moore 在这篇文章中解释了如何在 PHP 中使用 bcrypt 对密码进行散列?

你如何使用 bcrypt 在 PHP 中散列密码?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM