免費轉換器

Bcrypt 密碼 產生器

在瀏覽器中即時產生安全的bcrypt密碼雜湊值。選擇成本因子,客戶端雜湊 — 完全私密且免費。

關於此工具

bcrypt 是由 Niels Provos 和 David Mazières 於 1999 年設計的密碼雜湊函數,源自 Blowfish 密碼。與 SHA-256 等通用雜湊函數不同,bcrypt 故意緩慢(並且可以透過成本參數配置緩慢),這正是密碼雜湊器所需的屬性。更快的雜湊函數可以讓攻擊者每秒暴力破解更多候選者;較慢的速度會限制它們。

bcrypt 也自動合併每個密碼的鹽,消除基於預先計算的彩虹表的一整類攻擊。 salt 和 cost 參數作為 bcrypt 輸出的一部分存儲,因此驗證只需要存儲的哈希值和候選密碼 - 無需單獨的 salt 管理。這種緩慢、鹽分和獨立格式的結合使得 bcrypt 成為二十年來的預設密碼哈希,並且成為今天的一個強有力的選擇。

現代替代方案是存在的。 Argon2 贏得了 2015 年密碼哈希競賽,除了時間硬度之外,還提供記憶體硬度。 scrypt 提供類似的屬性。對於新設計,建議選擇 Argon2id。 bcrypt 仍然可以接受並廣泛部署,特別是在 Argon2 不可用的環境中。

為什麼要使用 bcrypt 對密碼進行雜湊處理

將密碼儲存為明文是一種不當行為。使用像 SHA-256 這樣的快速雜湊值來儲存它們也好不了多少——現代 GPU 每秒計算數十億次 SHA-256 雜湊值,使得對任何常見密碼的暴力攻擊在數小時內變得可行。 bcrypt 故意緩慢的速度改變了經濟性:在成本係數 12 下,攻擊者為每個候選密碼花費大約 250 毫秒,這使得暴力破解對於任何重要的密碼都是不切實際的。

bcrypt 的自動每個密碼鹽也能抵禦彩虹表攻擊。兩個具有相同密碼的使用者會產生不同的 bcrypt 雜湊值,因為他們的鹽不同。破壞密碼資料庫不會讓攻擊者快速辨識常見密碼或預先計算表的命中。

使用方法

輸入密碼,選擇成本,取得雜湊值。

  1. 輸入密碼: 輸入要哈希的密碼。該工具完全在您的瀏覽器中運行;密碼不會傳輸到任何地方。
  2. 選擇成本因素: 預設值為 10,在現代硬體上產生大約 100 毫秒的哈希時間。建議新應用程式使用 12(250 毫秒)。較高的值可以提高安全性,但代價是驗證速度較慢。
  3. 產生: 雜湊器產生隨機 16 位元組鹽,執行 bcrypt 金鑰派生,並產生標準 $2b$ 格式的雜湊值。
  4. 使用哈希: 將完整的輸出 ($2b$cost$saltAndHash) 儲存在您的密碼資料庫中。驗證使用相同的庫將候選者與儲存的雜湊值進行比較。

常見用例

技術細節

bcrypt 使用修改後的 Blowfish 密碼的金鑰設定階段,重複 2^cost 次。成本因素是對數的 — 成本 12 是成本 11 的兩倍,是成本 10 的四倍。這種對數縮放使管理員可以隨著硬體的改進而逐漸提高成本,而無需重新設計系統。

輸出格式為 $version$cost$saltAndHash,其中 saltAndHash 使用自訂字母表進行 Base64 編碼。該版本通常是 $2b$ (修復了環繞錯誤的現代變體)或 $2y$ (特定於 PHP 的等效版本)。鹽為16位元組;雜湊值是 24 個位元組;它們一起編碼為 53 個字元的 custom-base64。

最大輸入長度為 72 位元組(Blowfish 金鑰長度限制)。較長的密碼會被悄悄截斷,這是 bcrypt 的一個長期存在的怪癖。最佳實踐是將密碼長度限制為 72 個字節,或使用 SHA-256 進行預哈希,以在 bcrypt 之前標準化長度。

最佳實踐

常見問題

我可以自訂生成的輸出嗎?
是的。該工具提供了各種自訂選項,可根據您的特定需求自訂輸出。在生成之前調整設置,或使用不同的選項重新生成。
產生的內容可以免費使用嗎?
是的。您使用此工具產生的所有內容都可以用於個人、教育或商業目的,沒有任何限製或歸屬要求。
這個需要帳號嗎?
不需要。該工具無需註冊、無需電子郵件、無需註冊即可立即使用。只需打開頁面並開始生成。
我的輸入資料是否保密?
是的。所有處理都發生在您的瀏覽器中。您的輸入資料和產生的輸出永遠不會發送到任何外部伺服器。
我應該添加自己的鹽嗎?
不會。 bcrypt 自動產生並儲存隨機鹽。添加自己的鹽是不必要的,並且可能會導致微妙的錯誤。使用庫的預設鹽生成。
密碼是否發送到伺服器?
不會。 bcrypt 雜湊發生在您的瀏覽器中。密碼永遠不會離開您的裝置。
為什麼有 $2a$、$2b$、$2y$ 變體?
$2a$ 是原版。 $2b$ 修復了 2014 年發現的環繞錯誤。 $2y$ 是 PHP 特定的,功能上等同於 $2b$。新系統應該會產生 $2b$ 雜湊值。
我可以將高成本雜湊降級為較低成本嗎?
不會。哈希值包含成本作為輸出的一部分,並且驗證需要相同的成本。要更改成本,請在下次成功登入時重新哈希。