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

时间:2015-07-12 00:09:56

标签: php security password-storage

我一直在线阅读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);

这里也是单词"密码"的散列字符串。只是为了确保散列工作正常。

SHA512:

b109f3bbbc244eb82441917ed06d618b9008dd09b3befd1b5e

MD5:

5f4dcc3b5aa765d61d8327deb882cf99

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

1 个答案:

答案 0 :(得分:5)

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