生成和驗證 bcrypt 密碼雜湊。配置工作因子和演算法。
使用 CSPRNG 生成隨機 128 位元(16 位元組)鹽值。鹽值防止彩虹表攻擊 — 相同密碼產生不同雜湊。
Eksblowfish 演算法運行 2^n 次迭代(n 是您的成本因子)。加倍成本就會加倍計算時間 — 使暴力攻擊成比例地更難。
輸出編碼所有內容:$2b$12$[22字元鹽值][31字元雜湊]。"$2b$12$" 前綴告訴 bcrypt 使用 cost=12。不需要單獨的鹽值欄位。
$2b$12$eImiTAiTAi25sDB8iBjEJfF2PbO0oagzXCgKCQfHIFnOSuJl.J2
$2b$演算法版本(2a、2b、2y)
12$成本因子(2^12 = 4,096 輪)
22 字元Base64 編碼鹽值(128 位元)
31 字元Base64 編碼雜湊(184 位元)
| 成本 | 迭代次數 | 大約時間 | 建議 |
|---|---|---|---|
| 10 | 1,024 | ~50-100ms | 新應用程式的最低要求 |
| 11 | 2,048 | ~100-200ms | 適合高流量 API |
| 12 | 4,096 | ~200-400ms | 推薦預設值(2025) |
| 13 | 8,192 | ~400-800ms | 高安全性應用程式 |
| 14 | 16,384 | ~800ms-1.6s | 最大實用成本 |
現代伺服器 CPU 上的近似時間。始終在目標硬體上進行基準測試。
另請參見 雜湊生成器 用於 MD5、SHA-1、SHA-256、SHA-512 和其他密碼雜湊函式。
bcrypt 是 Niels Provos 和 David Mazières 於 1999 年為 OpenBSD 設計的密碼雜湊函式。與 MD5 或 SHA 不同,bcrypt 是故意緩慢且 CPU 密集型的,使暴力攻擊不切實際。它自動包含鹽值,防止彩虹表攻擊。對所有密碼儲存使用 bcrypt(或 Argon2)— 永遠不要儲存明文或快速雜湊(MD5/SHA)密碼。
成本因子(工作因子)控制 bcrypt 的速度。每增加一個單位,計算時間加倍。對於使用者認證,目標是伺服器硬體上 100-300ms 的雜湊時間。從 12 開始進行基準測試 — 使用能使登入時間保持在 500ms 以下的最高值。越高越安全但越慢。成本 10 是 2025 年新應用程式的最低推薦值。
兩者都是現代密碼雜湊演算法。bcrypt 經過實戰檢驗(25年以上)且被廣泛支援。Argon2 贏得了密碼雜湊競賽(2015年),透過使用記憶體硬度對 GPU 攻擊具有更強的抵抗力。Argon2id(推薦變體)結合了 Argon2i 和 Argon2d,對側信道攻擊和 GPU 攻擊都有抵抗力。對於新應用程式,Argon2id 是首選。
此工具生成與任何 bcrypt 函式庫相容的標準 bcrypt 雜湊。雜湊處理完全在瀏覽器中使用 bcryptjs 函式庫運行 — 密碼不會發送到伺服器。但是,在生產應用程式中,始終在伺服器端生成密碼雜湊。客戶端示範僅用於學習和測試目的。
所有雜湊運算均在您的瀏覽器中本地進行。密碼永遠不會被傳輸或儲存。