Bcrypt 雜湊產生器和驗證器
生成具有可配置成本因子(輪數 4-15)的 Bcrypt 密碼雜湊,並驗證純文字密碼是否與現有的 Bcrypt 雜湊匹配。包含視覺化雜湊結構分解、即時安全計量器、成本與速度估算器,以及並排的變體說明($2a$、$2b$、$2y$)。
偵測到廣告封鎖,導致我們無法顯示廣告
MiniWebtool 依靠廣告收入免費提供服務。如果這個工具幫到你,歡迎升級 Premium(無廣告 + 更快),或將 MiniWebtool.com 加入允許清單後重新整理頁面。
- 或升級 Premium(無廣告)
- 允許 MiniWebtool.com 顯示廣告,然後重新載入
Bcrypt 雜湊產生器和驗證器
歡迎使用 Bcrypt 雜湊產生器和驗證器 — 這是一款免費的線上工具,讓您可以使用可配置的成本因子產生符合密碼學安全標準的 bcrypt 密碼雜湊,並驗證純文字密碼是否與現有的 bcrypt 雜湊相符。無論您是在填充資料庫種子、調試登錄流程、在系統間遷移用戶,還是學習自適應密碼雜湊,此工具都能為您提供即時結果,並對 bcrypt 如何結構化其 60 字元雜湊格式進行教育性的視覺化分解。
什麼是 Bcrypt 以及為什麼要使用它?
Bcrypt 是一種基於 Blowfish 加密的自適應密碼雜湊函數,由 Niels Provos 和 David Mazières 於 1999 年設計。與 SHA-256 或 MD5 等快速加密雜湊不同,bcrypt 被刻意設計得很慢,並包含一個可隨硬體提升而增加的可調 成本因子。每個 bcrypt 雜湊還包含一個唯一的隨機 鹽值,可防止攻擊者使用預先計算的彩虹表。OWASP 建議將 bcrypt 作為現代 Web 應用程式中存儲用戶憑據的四種可接受密碼雜湊演算法之一。
成本因子:Bcrypt 安全性的核心
成本因子(也稱為 工作因子 或 輪數)控制雜湊的計算成本。它是按對數計算的:每增加 1,工作量就會翻倍。成本為 12 在典型的現代 CPU 上大約需要 250 毫秒;成本為 14 則大約需要 1 秒。下表顯示了各個成本級別的預估計算時間 — 請選擇一個對您的登錄流程足夠快,但又慢到足以讓攻擊者感到挫敗的值。
| 成本 | 輪數 | 預估時間 | 強度 | 推薦用途 |
|---|---|---|---|---|
| 4 | 2^4 |
< 1 ms | 僅供測試 — 切勿用於生產 | |
| 5 | 2^5 |
2 ms | 僅供測試 — 切勿用於生產 | |
| 6 | 2^6 |
4 ms | 僅供測試 — 切勿用於生產 | |
| 7 | 2^7 |
8 ms | 僅供測試 — 切勿用於生產 | |
| 8 | 2^8 |
16 ms | 遺留系統 | |
| 9 | 2^9 |
31 ms | 遺留系統 | |
| 10 | 2^10 |
62 ms | 生產環境最低要求 | |
| 11 | 2^11 |
125 ms | 生產環境最低要求 | |
| 12 | 2^12 |
250 ms | 推薦預設值 | |
| 13 | 2^13 |
500 ms | 高安全性應用程式 | |
| 14 | 2^14 |
1.00 秒 | 最高強度 | |
| 15 | 2^15 |
2.00 秒 | 最高強度 |
Bcrypt 雜湊結構詳解
每個 bcrypt 雜湊長度固定為 60 個字元,並遵循固定的結構。了解每個部分可以更輕鬆地調試登錄問題或在系統間遷移雜湊:
$2b$ → 演算法變體$12$ → 成本因子 (2^12 = 4096 輪)7i..qTPY7p4ZLvKIepRKwe → 22 字元的 base64 鹽值lX0JB55DviohJT.JYruzy4EN6cl.q8O → 31 字元的雜湊摘要
鹽值與摘要編碼
Bcrypt 使用自定義的 base64 字母表,與標準 base64 類似,但使用 ./ 代替 +/ 且不使用填充。這純粹是歷史原因,不影響安全性。鹽值為 16 個隨機位元組,編碼為 22 個 base64 字元;摘要為 23 位元組,編碼為 31 個字元。
Bcrypt 變體說明
在實際應用中,您會遇到幾種 bcrypt 前綴。它們產生的雜湊結構相同,但起源不同:
如何使用此工具
- 選擇模式: 選擇產生雜湊來建立新的 bcrypt 雜湊,或選擇驗證雜湊來檢查密碼是否與現有雜湊相符。
- 輸入密碼: 在輸入欄位中輸入純文字密碼。如果您的密碼接近 bcrypt 的 72 位元限制,位元計量器會發出警告。
- 設置成本因子: 在產生模式下,拖動滑塊選擇 4 到 15 之間的成本因子。預估計算時間和安全評級會即時更新。
- 貼上要驗證的雜湊: 在驗證模式下,貼上現有的以
$2a$、$2b$、$2x$或$2y$開頭的 60 字元 bcrypt 雜湊。 - 執行並讀取結果: 點擊操作按鈕。產生模式返回帶有顏色標記結構分解的雜湊;驗證模式顯示巨大的「相符」或「不相符」指示器,並顯示原始成本因子。
72 位元密碼限制
Bcrypt 建立在 Blowfish 密鑰設置階段之上,該階段僅消耗密碼的前 72 個位元組。超過 72 個位元組的密碼會被舊程式庫靜默截斷,或被新程式庫直接拒絕。請注意,計算的是位元組而非字元 —— 單個表情符號佔用 4 個位元組,大多數非 ASCII 字元在 UTF-8 中佔用 2-4 個位元組。如果您的應用程式接受任意長度的密碼,標準的緩解措施是在傳遞給 bcrypt 之前先用 SHA-256 對密碼進行預雜湊,並對摘要進行 base64 編碼;這會產生固定的 44 位元組輸入,完全符合限制。
何時選擇 Bcrypt vs. Argon2 vs. Scrypt
來自 OWASP 和 IETF (RFC 9106) 的現代密碼雜湊建議列出了四種可接受的演算法:Argon2id(新應用程式的首選)、bcrypt、scrypt 和 PBKDF2。在以下情況下選擇 bcrypt:
- 您需要廣泛的兼容性 — 每一種主流語言都有成熟的 bcrypt 程式庫
- 您正在處理一個已經在使用 bcrypt 的現有系統
- 您想要一個經過 25 年以上密碼分析考驗的成熟演算法
- 記憶體困難型雜湊(Argon2id, scrypt)在您的環境中不切實際
如果您正在構建一個沒有兼容性限制的新系統,請選擇 Argon2id — 它是密碼雜湊競賽(Password Hashing Competition)的現代獲勝者,提供了 bcrypt 無法比擬的抗 GPU 和 FPGA 攻擊能力。
實際應用場景
對於開發人員
- 為開發資料庫提供逼真的測試用戶種子,而無需運行完整的註冊流程
- 為執行登錄路徑的集成測試產生固定裝置數據
- 通過針對用戶報告的密碼驗證生產環境雜湊來調試登錄失敗
- 在下次登錄時通過重新雜湊將舊的
$2a$雜湊遷移到$2b$ - 通過測量實際計算時間來為您的生產環境調整成本因子
對於安全工程師
- 驗證第三方身份驗證服務是否按照其聲稱的成本因子產生雜湊
- 通過檢查生產樣本中的雜湊變體和成本來審計密碼存儲
- 構建培訓教材,展示 bcrypt 的結構如何使其具有抗彩虹表能力
對於學習者
- 將同一個密碼產生兩次,觀察鹽值如何產生不同的雜湊
- 嘗試不同的成本因子,親身體驗工作量翻倍的效果
- 驗證已知雜湊,了解 bcrypt 如何在雜湊候選密碼之前提取成本和鹽值
常見問題解答
我應該為 bcrypt 使用什麼成本因子?
OWASP 目前建議成本因子至少為 10,12 是一個不錯的現代預設值,在典型伺服器上大約需要 250 毫秒。成本是按對數計算的,因此每增加 1,工作量就會翻倍。成本 14 適用於高安全性應用程式,而成本 15 是交互式登錄的實際上限。切勿在生產環境中使用低於 10 的成本。
$2a$、$2b$、$2x$ 和 $2y$ 有什麼區別?
這四種都是通過前綴區分的 bcrypt 變體。$2a$ 是原始修訂版本;$2x$ 和 $2y$ 是 2011 年發現符號擴展錯誤後針對 PHP 的緊急修復;$2b$ 是修復了長密碼環繞錯誤的現代參考實現。使用任何變體產生的雜湊仍然是可以驗證的。現代程式庫預設產生 $2b$,您應該優先將其用於新的雜湊。
我輸入的密碼會被傳送到伺服器嗎?
表單通過 HTTPS 在伺服器端處理以執行 bcrypt 運算,但密碼和產生的雜湊都不會被記錄或存儲 — 每個請求處理後即被捨棄。如果對測試密碼有絕對的疑慮,請切勿將真實的生產環境密碼貼上到任何線上工具。請將此工具用於臨時測試密碼或在本地開發環境中使用。
為什麼 bcrypt 有 72 位元的密碼限制?
Bcrypt 演算法建立在 Blowfish 密鑰設置階段之上,該階段僅消耗輸入的前 72 位元。超過 72 位元的密碼會被舊程式庫靜默截斷,或被新程式庫拒絕。為了支持任意長度的密碼,在傳遞給 bcrypt 之前,請先使用 SHA-256 進行預雜湊並對摘要進行 base64 編碼。當您的密碼超過限制時,此工具會發出警告。
我可以驗證由另一個 bcrypt 程式庫產生的雜湊嗎?
可以。所有 bcrypt 實現都遵循相同的傳輸格式($variant$cost$salt+digest,共 60 個字元)並產生可互操作的雜湊。只要變體前綴被識別,由 Node.js bcrypt、PHP password_hash、Python passlib、Spring Security 或任何合規程式庫製作的雜湊都可以在這裡正確驗證。
為什麼兩次產生同一個密碼會得到不同的雜湊?
Bcrypt 會為每個雜湊自動產生一個新的隨機 16 位元組鹽值。鹽值會混合到演算法中並嵌入到輸出中,因此同一個密碼的兩個雜湊幾乎永遠不會相同。驗證之所以有效,是因為 checkpw 會從存儲的雜湊中提取成本和鹽值,並在使用這些確切參數重新運行 bcrypt 之後比較摘要。
我可以從 bcrypt 雜湊中找回原始密碼嗎?
不能。Bcrypt 是一個單向函數 — 沒有解密操作。從雜湊中找回原始密碼的唯一方法是猜測密碼,並使用相同的成本和鹽值通過 bcrypt 運行它們,直到摘要相符,這正是攻擊者在暴力破解攻擊中所做的。Bcrypt 自適應成本的全部目的就是讓這些猜測的代價高昂到令人望而卻步。
它可以在行動裝置上運行嗎?
可以。界面完全採用響應式設計,適用於智慧型手機、平板電腦和桌上型電腦。模式切換、成本滑塊和結果面板都能自動適應窄螢幕。
額外資源
引用此內容、頁面或工具為:
"Bcrypt 雜湊產生器和驗證器" 於 https://MiniWebtool.com/zh-tw//,來自 MiniWebtool,https://MiniWebtool.com/
由 miniwebtool 團隊製作。更新日期:2026年4月26日