WALUDO 工具箱
CRYPTO.03 BCRYPT GENERATOR

Bcrypt 生成器

生成與驗證共用密碼輸入,右側 Hash Inspector 會自動說明結果;成本、耗時與 72 位元組界線都在操作旁顯示。

PASSWORD

密碼與生成參數

常見相容基準,正式環境仍須實測

輸入密碼生成,或在右側貼上 Hash 驗證

bcrypt.js 非同步本機計算 · 密碼與 Hash 不會上傳或儲存

§ 01

圍繞同一組密碼生成與驗證

1
1

輸入密碼並查看位元組

Bcrypt 的經典輸入上限是 72 個 UTF-8 位元組;中文與 emoji 會佔用多個位元組。超過時應調整密碼策略,不要忽略提示。

2
2

選擇 Cost

Cost 每增加 1,計算量大致加倍。12 是常見起點,但正式值必須在實際伺服器測量。

3
3

生成或驗證

生成結果會自動填入驗證區;驗證時輸入明文與完整 Hash,頁面會讀取內嵌的 salt 與 cost 後比對。

§ 02

Bcrypt 以刻意變慢提高猜密碼成本

Bcrypt 是密碼雜湊,不是可逆加密。每個結果包含版本、Cost、隨機 salt 與雜湊主體;驗證時會從完整字串讀取參數。

正常登入只計算一次,攻擊者卻要為每次猜測重複高成本運算。應隨硬體與風險定期檢視 Cost,不能盲目拖慢登入服務。

§ 03

Cost Factor 的數量級與用途

Cost
約略輪次
建議
4–9
16–512
本機測試與示範
10–11
1024–2048
舊系統與低效能環境
12
4096
常見基準,仍需實測硬體
13–14
8192–16384
較高成本,評估登入延遲
15
32768
在瀏覽器中可能明顯變慢
§ 04

72 位元組限制與版本前綴是常見相容陷阱

傳統 Bcrypt 只使用密碼前 72 個位元組。72 個 ASCII 字元正好是 72 位元組,但中日韓文字常佔 3 個位元組,許多 emoji 佔 4 個;字元數不等於位元組數。

常見前綴有 2a、2b 與 2y。現代結果通常使用 2b,2y 常見於 PHP 生態。跨語言遷移時請使用維護中的函式庫,並以真實樣本驗證。

§ 05

多語言 Bcrypt 生成與驗證

import bcrypt from 'bcryptjs';
const hash = await bcrypt.hash(password, 12);
const valid = await bcrypt.compare(password, hash);
§ 06

常見問題

Q1Bcrypt 可以解密嗎?

不能。驗證會使用 Hash 內嵌的 salt 與 Cost 重新計算輸入,忘記密碼應重設。

Q2Cost 12 一定適合正式環境嗎?

不一定。它是常見起點,應在正式硬體基準測試,並考量並行登入、限速與體驗。

Q3為什麼相同密碼每次 Hash 都不同?

每次生成都會使用新的隨機 salt;不同字串仍可驗證同一密碼,這能抵抗彩虹表與批次預計算。

Q4密碼會上傳或儲存嗎?

不會。bcrypt.js 在目前頁面非同步計算,不會傳送輸入或寫入瀏覽器儲存空間。

Q5新專案該選 Bcrypt 還是 Argon2id?

兩者都能儲存密碼。新系統通常優先評估 Argon2id;需要廣泛框架相容或已有 Bcrypt 資料時,Bcrypt 仍很常見。

✳ WALUDO TOOLBOX ✳ 瀏覽器原生工具集 · NO SERVER · NO DATA COLLECTION

您的檔案永遠不會離開電腦 · FILES STAY LOCAL · PRIVACY FIRST