我剛剛瞭解到,PHP有一個password_hash()
函數,而不是手動調用密碼的哈希算法。 http://php.net/manual/en/function.password-hash.php我不明白password_hash()函數
但我有兩個關於文檔的問題。
- 第一個是關於默認哈希算法,使用
PASSWORD_DEFAULT
作爲算法。由於PHP 5.5的算法是bcrypt
,然後它說:
注意,這個常數被設計成新的,更強的 算法被添加到PHP隨時間而改變。因此,使用該標識符的結果的長度可以隨時間變化。因此, 建議將結果存儲在數據庫中的列,可以 擴大超過60個字符(255個字符將是一個不錯的選擇)
我怎麼仍然保持用戶能夠後登錄散列算法會改變,如果我只保留散列的結果,並且密碼散列的結果會變得不同?
- 根據
salt
選項它說:
警告鹽選項已被棄用PHP 7.0.0的。現在是 首選簡單地使用默認生成的鹽。
如果該函數會產生一個salt,那麼對於相同的密碼,在兩次不同的執行過程中產生的hash不會不同麼?除非產生鹽的算法是這樣的,即相同的密碼總是會得到相同的鹽,但是這會破壞使用鹽的目的,不是嗎?
可能重複[如何bcrypt有內置鹽?](http://stackoverflow.com/questions/6832445/how-can-bcrypt-have-built-in-salts) – Jerodev