bcrypt 雜湊產生與驗證工具
以 bcrypt 雜湊密碼,並檢查密碼是否與雜湊值相符。
雜湊密碼
0 / 72 位元組
每提高一級,時間就加倍。登入用途通常是 10–12。雜湊中記錄了成本,所以驗證時不需要設定。
輸入密碼:雜湊會顯示在這裡。
以雜湊驗證密碼
$2a$、$2b$ 或 $2y$,60 個字元。成本會從雜湊中讀取。
輸入密碼與雜湊即可驗證。
bcrypt 是一種刻意設計得很慢的密碼雜湊:伺服器儲存的是 bcrypt 雜湊而不是密碼,登入時再把輸入的內容雜湊後比對。每個雜湊都帶有自己的隨機鹽值與成本,所以同一個密碼每次都會得到不同的雜湊,而每一個都能驗證成功。你可以用本頁為設定檔或測試帳號建立雜湊,或確認某個密碼是否與已儲存的雜湊相符。雜湊在瀏覽器中計算,密碼不會離開你的裝置;免費,也不需要註冊。
如何產生與驗證 bcrypt 雜湊
- 輸入密碼。雜湊會隨輸入即時出現,並顯示在你的裝置上花了多少時間。
- 如果你的系統需要其他成本值,請移動「成本」滑桿(預設為 10)。
- 複製 $2b$ 雜湊,或點擊下方的「驗證看看」確認它能驗證成功。
- 要檢查既有的雜湊,請在「以雜湊驗證密碼」下方貼上雜湊與密碼:會顯示「相符」或「不相符」。
功能
- $2b$ 雜湊,每次都使用新的隨機 16 位元組鹽值
- 成本 4~16(預設 10),並顯示在你的裝置上計算雜湊所花的時間
- 以 $2a$、$2b$ 與 $2y$ 雜湊驗證密碼:顯示「相符」或「不相符」,以及版本與成本
- 計算位元組數是否超過 bcrypt 的 72 位元組上限,並提醒哪些字元會被忽略
- 在背景執行緒中執行,高成本也不會讓頁面卡住:可以「停止」,或「重新雜湊」以使用新的鹽值
- 辨識 Argon2 雜湊,並提供 Argon2 工具的連結
隱私安全嗎?
是的。雜湊與驗證都在瀏覽器中以 WebAssembly 於背景執行緒執行;密碼絕不會上傳或儲存。
常見問題
bcrypt 雜湊可以解密嗎?
不行。bcrypt 是單向雜湊:沒有任何金鑰能把它還原成密碼。找出密碼的唯一方法是逐一猜測並雜湊每次的猜測,而 bcrypt 刻意讓這個過程變慢。要測試你認為正確的密碼,請使用「以雜湊驗證密碼」。
為什麼同一個密碼每次產生的雜湊都不同?
每個雜湊都會使用新的隨機 16 位元組鹽值,並存放在雜湊字串之中。驗證時會從雜湊讀回鹽值,所以這些雜湊都能用同一個密碼驗證成功。
應該選擇多少成本?
每提高一級,運算量就加倍。登入用途通常是 10 到 12;請選擇伺服器每次登入負擔得起的最高成本,通常約四分之一秒到半秒。這裡顯示的時間,是在你自己裝置上的結果。
為什麼 bcrypt 會忽略長密碼的一部分?
bcrypt 只讀取密碼以 UTF-8 編碼的前 72 個位元組。中文、韓文等文字每個字佔 3 個位元組,所以 24 個字就已達上限。有字元被忽略時工具會提醒你;更長的通關密語可以改用沒有這項限制的 Argon2。
$2a$、$2b$ 與 $2y$ 有什麼不同?
這些字母代表特定實作中舊錯誤的修正;對一般密碼來說,計算結果相同。本工具產生目前 OpenBSD 使用的 $2b$ 前綴,並能驗證全部三種。在這裡產生的雜湊,已用 Python 的 bcrypt 函式庫與 Linux 的 crypt() 驗證過。