DevToolPal
繁

Bcrypt 雜湊產生與驗證

依指定成本用 bcrypt 雜湊密碼,或驗證密碼是否與 bcrypt 雜湊相符。

本機處理,不會上傳

選項

模式

密碼

結果

結果會顯示在這裡

功能說明

bcrypt 是刻意設計得很慢的密碼雜湊函式。MD5、SHA-256 每秒能算數十億次,而 bcrypt 有可調整的成本參數,讓偷走資料庫的攻擊者每猜一次都代價高昂。它和 Argon2、scrypt 一樣,至今仍是儲存密碼最常用的選擇之一。

本工具有兩個功能:

  • 產生雜湊:依你選擇的成本和版本前綴,把密碼轉成 bcrypt 雜湊。
  • 驗證:檢查密碼是否與既有的 bcrypt 雜湊相符,例如資料庫或框架種子檔中的雜湊。

使用方法

  1. 輸入密碼,或點選範例。
  2. 在產生雜湊模式下選擇成本和版本,雜湊立即產生;點選換一個鹽值可得到另一個。
  3. 在驗證模式下貼上要驗證的 bcrypt 雜湊,結果會顯示密碼是否相符。

看懂 bcrypt 雜湊

像 $2b$10$./3kakECWB0QfIgYzIqciuv449HNnwGbgExtJQQwQ1MofonthOdoK 這樣的雜湊由四部分組成:版本 2b、成本 10(2¹⁰ 輪金鑰設定)、22 個字元的鹽值和 31 個字元的檢查值。伺服器日後驗證密碼所需的一切都在這個字串裡,所以只需要儲存雜湊。

需要了解的限制

bcrypt 只讀取密碼的前 72 個位元組。更長的密碼,或含有許多非 ASCII 字元的密碼(UTF-8 中每個字元占 2–4 個位元組),會被默默截斷,發生時工具會提示。若要支援很長的通關語,可以先做一次預先雜湊,或考慮 Argon2id。

常見問題

› 為什麼同一個密碼每次產生的雜湊都不一樣?

每次雜湊都使用新的 16 位元組隨機鹽值,鹽值就存在雜湊字串裡。這是刻意設計,讓相同的密碼不會得到相同的雜湊。要驗證密碼,請用「驗證」模式,不要直接比較雜湊字串。

› 成本應該選多少?

選擇伺服器每次登入負擔得起的最高成本,目前一般是 10 到 12。每加 1 工作量加倍。請在正式環境的硬體上實測,單次雜湊約 100–300 毫秒是常見目標。

› $2a$、$2b$ 和 $2y$ 有什麼差別?

演算法相同。$2b$ 是 OpenBSD 目前的前綴,$2y$ 是 PHP password_hash 寫出的前綴,$2a$ 是較舊的版本。多數函式庫三種都接受,選你的系統需要的即可。

› 我的密碼會被傳送出去嗎?

不會。雜湊和驗證都在瀏覽器中完成。密碼和要驗證的雜湊只存在目前頁面的記憶體裡,不會儲存,也不會加入分享連結。