跳到正文
馬克工具箱

bcrypt 加密與校驗

為密碼生成 bcrypt 雜湊,或者檢查一個密碼和已有的 bcrypt 雜湊是否匹配,適合除錯登入功能、初始化資料庫裡的管理員密碼。計算全部在瀏覽器裡完成,密碼不會發送到伺服器。

在瀏覽器本地執行,輸入的內容和檔案都不會上傳

生成雜湊

10

每加 1 計算量翻一倍。目前登入場景常用 10~12。

校驗密碼與雜湊

使用步驟

  1. 在「生成雜湊」裡輸入密碼,拖動滑桿設定成本因子,點「生成雜湊」。
  2. 複製生成的雜湊。每次生成都會使用新的隨機鹽,所以同一個密碼的雜湊每次都不同。
  3. 要校驗,在右側貼上 bcrypt 雜湊並輸入密碼,結果會自動顯示是否匹配。

引數說明

成本因子
4~15,預設 10。計算量是 2 的成本因子次方,每加 1 耗時翻一倍。頁面會顯示本次在你的瀏覽器中的耗時,可以作為選值參考。
版本字首
生成的雜湊以 $2b$ 開頭。校驗時 $2a$、$2b$ 和 PHP password_hash 生成的 $2y$ 都可以直接使用。
72 位元組限制
bcrypt 只使用密碼的前 72 個位元組(UTF-8 編碼下一個漢字佔 3 個位元組)。超長時頁面會提示,超出的部分不參與計算。

雜湊的組成

$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy

常見問題

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

bcrypt 每次都會生成 16 位元組的隨機鹽,鹽就寫在雜湊裡(成本因子之後的 22 個字元)。校驗時從雜湊中取出鹽重新計算,所以不同的雜湊都能校驗通過。

bcrypt 能解密嗎?

不能。bcrypt 是單向雜湊,只能用候選密碼重新計算後比對。網上的「bcrypt 解密」實際上都是拿常見密碼逐個嘗試。

成本因子設多少合適?

常見的建議是讓一次計算在伺服器上耗時 100 毫秒左右,目前一般是 10~12。太低容易被暴力破解,太高會拖慢登入、加重伺服器負擔。

和 MD5、SHA-256 比有什麼區別?

MD5、SHA-256 設計目標是算得快,一張顯示卡每秒能試幾十億次,不適合直接存密碼。bcrypt 故意算得慢,並自帶隨機鹽,是專門為儲存密碼設計的。

密碼會上傳嗎?

不會。雜湊和校驗都在瀏覽器裡用 JavaScript 計算,斷網也能用。

隱私說明

本工具完全在瀏覽器中執行,檔案和文字都在你的裝置上處理,不會上傳到我們的伺服器。

相關工具