什麼是Bcrypt雜湊產生器?

使用bcrypt演算法建立安全的加鹽密碼雜湊。可用於資料庫儲存前的密碼雜湊,或將現有雜湊與明文進行驗證。

bcrypt 是許多正式環境登入系統背後的密碼雜湊演算法。每次計算都會帶一段隨機鹽,所以同樣的密碼不會得到同樣的雜湊值。代價係數(4 到 18)每加 1 計算量就翻倍,可以把暴力破解的速度壓到極慢,同時保持登入延遲在可接受範圍。

使用方法

  1. 輸入要雜湊的密碼或字串,並選擇4到18之間的成本因子(加鹽輪數)。
  2. 點擊產生以建立bcrypt雜湊。成本因子越高,雜湊越安全,但運算時間也越長。
  3. 複製產生的雜湊用於您的應用程式,或使用驗證分頁來檢驗密碼與現有雜湊是否相符。

何時使用

  • 在把新註冊使用者的密碼寫入資料庫之前先做雜湊。
  • 對照既有的 $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。

相關工具