bcrypt 和隨機產生的鹽
bcrypt 是密碼雜湊演算法,利用加鹽來增強安全性。加鹽涉及將隨機資料合併到密碼雜湊中,確保即使相同的密碼也會產生不同的雜湊結果。
提供的 PHP 類別包含一個名為 genSalt() 的函數,該函數產生使用 openssl_random_pseudo_bytes() 函數的隨機鹽。然後,該鹽將用作 genHash() 函數中 bcrypt 雜湊過程的一部分。
genHash() 函數採用密碼並與隨機產生的鹽結合。產生的雜湊值是原始密碼、salt 和特定於演算法的前綴 ($2y$) 的混合,該前綴指示 bcrypt 演算法及其參數(例如工作負載係數)。
為了驗證密碼,提供的 verify() 函數將輸入的密碼與儲存的雜湊值進行比較。它透過將提供的密碼與儲存的雜湊值連接起來並使用 crypt() 函數再次對其進行雜湊來實現此目的。
理解為什麼隨機產生鹽的關鍵不影響密碼驗證的是檢查儲存的雜湊的格式。哈希由兩個主要部分組成:
當verify() 函數使用儲存的雜湊對提供的密碼進行雜湊處理時,它僅使用鹽部分作為其輸入。這確保了鹽被納入驗證過程。
總之,雖然 bcrypt 產生隨機鹽以確保密碼安全,但密碼驗證過程僅考慮儲存的雜湊值。這允許根據儲存的雜湊來驗證提供的密碼,即使鹽是隨機產生的。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3