bcrypt 生成與驗證
使用隨機鹽值生成 bcrypt 哈希,或驗證已有哈希;檢查 UTF-8 字節長度,並明確選擇成本參數。
生成或驗證一個密碼
生成模式返回含成本和鹽值的標準 $2a$ bcrypt 字符串。驗證模式從已有 $2a$、$2b$ 或 $2y$ 字符串讀取參數,只返回是否匹配。matches=false 表示計算完成但密碼不匹配。
默認成本為 12,默認生成 16 字節密碼學隨機鹽值。自定義鹽必須為 32 個十六進制數字,適合復現測試向量或既有系統;低於 10 的成本會顯示診斷。
72 字節邊界
密碼按 UTF-8 編碼,不去空格、不做 Unicode 規範化。超過 72 字節直接報錯,不靜默截斷;一個漢字通常佔三個字節。支持空密碼和內部 NUL 字節;這些情況使用兼容的 bcryptjs 實現,避免 WASM 包裝的空輸入限制及 NUL 截斷。
生成和驗證成本均限於 4–16,在可取消的 Worker 中執行,最長 30 秒。這是瀏覽器資源限制,並非 bcrypt 格式的上限;生產認證服務仍需獨立測量成本。
參考
常見問題
bcrypt 能解密密碼嗎?
不能。bcrypt 是密碼哈希;驗證會用候選密碼重新計算並比較結果。
為什麼中文密碼更容易達到限制?
限制按編碼後的字節計算,而非顯示字符數;工具檢查實際 UTF-8 字節數。
輸入會上傳嗎?
不會。處理在瀏覽器中執行,引擎從本站加載;工具不將輸入發送至處理 API,也不保存輸入。清除可移除可見輸入與結果。