我一直在线阅读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
提前感谢您的任何帮助/建议。
答案 0 :(得分:5)
正确的方法是使用password_hash
使用PASSWORD_DEFAULT
进行算法。这样,你将有一个很好的算法(bcrypt,如果你有PHP 5.5),它可以在未来的PHP版本中自动升级到更好的算法,而无需更改你的代码。密码也用盐进行哈希处理。