使用SHA512存储登录密码而不是MD5

Bra*_*ins 0 php security password-storage

我一直在线阅读MD5不是很安全,我已经决定将我的网站切换到使用SHA512,我之前从未这样做过,所以我只是要求你检查一下我是否做得对,或者是否有另一种更安全的哈希方法可用于存储密码?

$ upass是我需要哈希的用户密码.

这是我与MD5的原始PHP:

 $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']));
Run Code Online (Sandbox Code Playgroud)

这是我使用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);
Run Code Online (Sandbox Code Playgroud)

这里也是单词"password"的散列字符串,只是为了确保哈希工作正常.

SHA512:

b109f3bbbc244eb82441917ed06d618b9008dd09b3befd1b5e

MD5:

5f4dcc3b5aa765d61d8327deb882cf99

感谢您提前提供任何帮助/建议.

Gol*_*rol 5

正确的方法是使用password_hash使用PASSWORD_DEFAULT的算法.这样,你将有一个很好的算法(bcrypt,如果你有PHP 5.5),它可以在未来的PHP版本中自动升级到更好的算法,而无需更改你的代码.密码也用盐进行哈希处理.