什麼是Bcrypt雜湊產生器?
使用bcrypt演算法建立安全的加鹽密碼雜湊。可用於資料庫儲存前的密碼雜湊,或將現有雜湊與明文進行驗證。
bcrypt 是許多正式環境登入系統背後的密碼雜湊演算法。每次計算都會帶一段隨機鹽,所以同樣的密碼不會得到同樣的雜湊值。代價係數(4 到 18)每加 1 計算量就翻倍,可以把暴力破解的速度壓到極慢,同時保持登入延遲在可接受範圍。
使用方法
- 輸入要雜湊的密碼或字串,並選擇4到18之間的成本因子(加鹽輪數)。
- 點擊產生以建立bcrypt雜湊。成本因子越高,雜湊越安全,但運算時間也越長。
- 複製產生的雜湊用於您的應用程式,或使用驗證分頁來檢驗密碼與現有雜湊是否相符。
何時使用
- 在把新註冊使用者的密碼寫入資料庫之前先做雜湊。
- 對照既有的 $2b$ 雜湊,重現或測試登入流程。
- 在目標機器上實測,挑出合適的代價係數。
結果
一位後端開發者需要安全儲存使用者密碼。他輸入「MySecurePass123」並設定12輪加鹽,取得一個$2b$雜湊字串後存入PostgreSQL資料庫。
常見問題
- 正式環境的代價係數要設多少?
- 現代伺服器硬體上,12 是常見的下限,14 漸漸變成主流。建議單次登入的雜湊耗時落在 200 到 500 毫秒之間。低於 100 毫秒太弱,超過一秒會讓低階裝置的使用者體驗變差。
- 為什麼同一個密碼每次雜湊結果都不一樣?
- bcrypt 每次都會重新產生 16 位元組的鹽,並直接嵌入雜湊字串。這就是設計重點:兩個都用 letmein 當密碼的人,落進資料庫的雜湊是兩條完全不同的字串,即使外洩也無法用單一彩虹表破解。
- 密碼長度有上限要注意嗎?
- bcrypt 會悄悄截掉 72 位元組以後的內容。若要接受更長的密語,可先用 SHA-256 算摘要再餵給 bcrypt。多數應用把輸入限制在 64 到 72 字元就足夠。
- 可以驗證其他 bcrypt 函式庫產生的雜湊嗎?
- 可以。$2a$、$2b$、$2y$ 這幾個前綴在 PHP、Node、Python、Ruby、Go 和 Java 各種實作之間互通。把任何一個實作產出的雜湊貼進驗證頁,只要原密碼一致就會通過。
- 2026 年還要繼續用 bcrypt 嗎,還是換 argon2?
- argon2id 是現在推薦的選擇,但 bcrypt 仍然安全,語言與框架支援最廣。已經在用 bcrypt 的系統不需要急著遷移。全新專案可以直接挑 argon2。