我試圖從crackstation.net實現密碼散列/醃製算法,但我不確定如何實現它。從crackstation.net實現密碼散列/醃製算法
在用戶註冊時存儲密碼似乎與將密碼傳遞到create_hash()一樣簡單。
$password = create_hash($_POST['Password'];
我不是跟隨如何驗證用戶登錄。 validate_password($ password,$ good_hash)返回true或false,並將$ password作爲參數,所以除了第二個參數$ good_hash之外,它看起來似乎沒有什麼意思。這個參數來自哪裏?
我的理解是,密碼在每次使用時變成散列值,並且散列值是存儲和比較的值。那麼爲什麼我會同時擁有$ password和$ good_hash值呢?
的功能快速瀏覽:
function create_hash($password){
calls pbkdf2()
}
function validate_password($password, $good_hash){
calls pbkdf2()
calls slow_equals()
}
function slow_equals($a, $b){
}
function pbkdf2($algorithm, $password, $salt, $count, $key_length, $raw_output = false){
}
當然這種不同的,更好的方法也將是一種有益的。 謝謝
我會假設$ good_hash是存儲的散列密碼,並且$ password是提交登錄的原始密碼 – 2012-07-11 03:17:15
不要自己扮演角色,請使用[PHPass](http://stackoverflow.com/questions/1581610/how-我的用戶密碼安全/ 1581919#1581919) – Jacco 2012-07-12 10:48:32
兩個PBKDF2注意事項:首先,儘可能使用高迭代次數,並在峯值負載期間保持足夠的性能。其次,永遠不要求比本機散列更多的輸出長度(SHA-1是20字節,SHA-224是28字節,SHA-256是32字節,SHA-384是48字節,而SHA-512是64字節)。一種不同的方法是password_hash()和password_verify(),從5.5開始可以在PHP中使用,並且從5.3.7開始使用兼容性庫,每個[PHP.net密碼散列常見問題](http://www.php.net/manual /en/faq.passwords.php)。 – 2014-03-25 02:51:58