我一直在網上閱讀很多MD5不是很安全的,我決定將我的網站切換到使用SHA512,我從來沒有這樣做過,所以我只是問你要檢查我是否正確地做了它,或者是否有其他更安全的散列方法,我可以使用它來存儲密碼?使用SHA512來存儲登錄密碼而不是MD5
$ 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']));
這是我的新的PHP使用SHA:
$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
感謝提前任何幫助/諮詢。
當您修復/更新代碼以使用「良好的現代實踐」時,還可以使用佔位符/參數化查詢以及mysqli或PDO。 – user2864740
MD5和SHA512都不是加密密碼,而是加密散列函數。這是一個巨大的差異:散列函數在加密時(即解密)沒有反向操作。 – Gumbo