使用 SHA512 代替 MD5 存储登录密码

Using SHA512 to store login passwords instead of MD5

我在网上看到很多 MD5 不是很安全,我决定将我的网站切换为使用 SHA512,我以前从未这样做过所以我真的只是请你检查我是否是否已正确完成,或者是否有其他更安全的哈希方法可用于存储密码?

$upass 是我需要散列的用户密码。

这是我的原始 PHP MD5 :

 $uname = mysql_real_escape_string($_POST['uname']);
 $sname = mysql_real_escape_string($_POST['sname']);
 $email = mysql_real_escape_string($_POST['email']);
 $upass = md5(mysql_real_escape_string($_POST['pass']));

这是我使用 SHA 的新 PHP:

 $uname = mysql_real_escape_string($_POST['uname']);
 $sname = mysql_real_escape_string($_POST['sname']);
 $email = mysql_real_escape_string($_POST['email']);
 $upass = mysql_real_escape_string($_POST['pass']);

 $upass = hash('SHA512', $upass);

这也是单词 "password" 的散列字符串,只是为了确保散列有效。

SHA512:

b109f3bbbc244eb82441917ed06d618b9008dd09b3befd1b5e

MD5 :

5f4dcc3b5aa765d61d8327deb882cf99

提前感谢您的帮助/建议。

正确的方法是使用 password_hashPASSWORD_DEFAULT 作为算法。这样,您将拥有一个好的算法(bcrypt,如果您有 PHP 5.5),它可能会在 PHP 的未来版本中自动升级到更好的算法,而无需更改您的代码。密码也用盐散列。