Password_hash 為相同的輸入產生不同的雜湊值
在登入系統中,為了安全起見,對密碼進行雜湊處理是很常見的。但是,某些使用者可能會遇到這樣的問題:password_hash 對於相同密碼每次都會產生不同的雜湊值。這可能會阻止使用password_verify()成功驗證。
了解Password_hash的行為
Password_hash旨在為每個雜湊操作產生唯一的鹽。這種鹽在散列之前附加到密碼中,使得幾乎不可能預測散列值。即使是相同的密碼,由於隨機鹽的原因,每次也會產生不同的雜湊值。
解決驗證問題
要驗證密碼,您需要提供原始密碼未散列的密碼作為password_verify() 的第一個參數。第二個參數應該是儲存在資料庫中的雜湊密碼。
驗證範例程式碼
$password4 = 'PlaintextPassword'; $dbpassword = 'HashedPasswordFromDatabase'; if (password_verify($password4, $dbpassword)) { // Password verified } else { // Password does not match }
其他安全措施
如果需要,您可以透過增加成本係數來提高password_hash的安全性。預設成本為 10,但您可以設定更高的值(例如 15)以增加保護。
$password = password_hash($password4, PASSWORD_DEFAULT, ['cost' => 15]);
以上是為什麼Password_hash為相同的輸入產生不同的雜湊值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!