使用步驟
- 在「生成雜湊」裡輸入密碼,拖動滑桿設定成本因子,點「生成雜湊」。
- 複製生成的雜湊。每次生成都會使用新的隨機鹽,所以同一個密碼的雜湊每次都不同。
- 要校驗,在右側貼上 bcrypt 雜湊並輸入密碼,結果會自動顯示是否匹配。
引數說明
- 成本因子
- 4~15,預設 10。計算量是 2 的成本因子次方,每加 1 耗時翻一倍。頁面會顯示本次在你的瀏覽器中的耗時,可以作為選值參考。
- 版本字首
- 生成的雜湊以 $2b$ 開頭。校驗時 $2a$、$2b$ 和 PHP password_hash 生成的 $2y$ 都可以直接使用。
- 72 位元組限制
- bcrypt 只使用密碼的前 72 個位元組(UTF-8 編碼下一個漢字佔 3 個位元組)。超長時頁面會提示,超出的部分不參與計算。
雜湊的組成
$2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
2b:演算法版本10:成本因子,即 2¹⁰ = 1024 輪N9qo8uLOickgx2ZMRZoMye:22 個字元的鹽- 其餘 31 個字元:雜湊值
常見問題
為什麼同一個密碼每次生成的雜湊都不一樣?
bcrypt 每次都會生成 16 位元組的隨機鹽,鹽就寫在雜湊裡(成本因子之後的 22 個字元)。校驗時從雜湊中取出鹽重新計算,所以不同的雜湊都能校驗通過。
bcrypt 能解密嗎?
不能。bcrypt 是單向雜湊,只能用候選密碼重新計算後比對。網上的「bcrypt 解密」實際上都是拿常見密碼逐個嘗試。
成本因子設多少合適?
常見的建議是讓一次計算在伺服器上耗時 100 毫秒左右,目前一般是 10~12。太低容易被暴力破解,太高會拖慢登入、加重伺服器負擔。
和 MD5、SHA-256 比有什麼區別?
MD5、SHA-256 設計目標是算得快,一張顯示卡每秒能試幾十億次,不適合直接存密碼。bcrypt 故意算得慢,並自帶隨機鹽,是專門為儲存密碼設計的。
密碼會上傳嗎?
不會。雜湊和校驗都在瀏覽器裡用 JavaScript 計算,斷網也能用。
隱私說明
本工具完全在瀏覽器中執行,檔案和文字都在你的裝置上處理,不會上傳到我們的伺服器。