什麼是 bcrypt?
bcrypt 是專為密碼儲存設計的密碼 hash 演算法。它會將密碼與隨機 salt 結合,並依照 cost factor 重複執行耗費資源的工作,因此攻擊者測試每一次猜測都需要更多時間。
何時使用此工具
- 為測試帳號、seed script 或本機開發環境產生 bcrypt hash。
- 比較不同 cost factor 如何改變輸出格式與執行時間。
- 建立可直接複製的 hash,而不必將密碼送到伺服器。
如何選擇 cost factor
Cost 值越高速度越慢,通常也更安全,但也會讓應用程式的每次登入嘗試變慢。互動式系統常見的 cost 約為 10-12;對僅限管理員或低流量工作流程,更高的值也可能合理。請在將負責驗證密碼的同類硬體上測試 cost。
注意事項
- 每次產生的 hash 都使用新的隨機 salt,因此即使密碼與 cost 相同,輸出也會改變。
- 儲存 bcrypt hash,而不是原始密碼。
- 將 bcrypt 用於密碼,不要用於檔案 checksum、簽章或一般 hash。
- 保持驗證行為一致,並避免透露使用者帳號是否存在。