Argon2 雜湊產生與驗證工具
以現代密碼雜湊標準 Argon2id 雜湊並驗證密碼。
雜湊密碼
輸入密碼:雜湊會顯示在這裡。
參數
雜湊中為 m=19456(KiB)
記憶體的通道數。在這裡會依序執行,伺服器則可能平行執行。它會改變雜湊,所以請與伺服器一致。
每次雜湊都使用新的 16 個隨機位元組。
以雜湊驗證密碼
PHC 字串:$argon2id$、$argon2i$ 或 $argon2d$。參數會從中讀取。
輸入密碼與雜湊即可驗證。
Argon2 是密碼雜湊競賽(Password Hashing Competition)的優勝者,並已標準化為 RFC 9106。它刻意設計得既慢又耗費記憶體,讓以 GPU 猜測密碼的成本變得很高。本頁會依你選擇的參數產生 Argon2 雜湊,輸出密碼函式庫儲存的 PHC 字串($argon2id$v=19$m=…,t=…,p=…$salt$hash)與原始十六進位值,也能以既有的 PHC 字串驗證密碼。全部在瀏覽器中執行,密碼不會離開你的裝置;免費,也不需要註冊。
如何產生與驗證 Argon2 雜湊
- 輸入密碼。雜湊會隨輸入即時出現,並顯示在你的裝置上花了多少時間。
- 選擇預設組合,或依伺服器設定調整記憶體、迭代次數與平行度。
- 複製 PHC 字串,或複製十六進位的原始雜湊與鹽值。
- 要檢查已儲存的雜湊,請在「以雜湊驗證密碼」下方貼上雜湊與密碼:會顯示「相符」或「不相符」。
功能
- Argon2id(預設)、Argon2i 與 Argon2d,版本 19
- 預設組合:OWASP 最低建議(19 MiB、t=2、p=1)、RFC 9106 低記憶體(64 MiB、t=3、p=4)與高強度(256 MiB、t=3、p=4)
- 記憶體 1 MiB~1 GiB、迭代次數 1~16、平行度 1~16、雜湊長度 4~128 位元組
- 隨機的 16 位元組鹽值,或以文字、十六進位或 Base64 輸入自訂鹽值(8~1024 位元組)
- PHC 字串,以及十六進位的原始雜湊與鹽值,各有「複製」按鈕
- 驗證 $argon2id$、$argon2i$ 與 $argon2d$ 字串(v=19 或 v=16),參數直接從雜湊讀取
隱私安全嗎?
是的。Argon2 在瀏覽器中以 WebAssembly 於背景執行緒執行,鹽值則來自瀏覽器的安全亂數產生器。密碼絕不會上傳或儲存。
常見問題
Argon2id、Argon2i 還是 Argon2d?
請用 Argon2id。RFC 9106 與 OWASP 都建議以它雜湊密碼:它結合了 Argon2i 抵抗旁路攻擊的能力,以及 Argon2d 抵抗 GPU 破解的能力。只有在需要配合既有系統時,才選擇其他變體。
記憶體、迭代次數與平行度該怎麼設定?
OWASP 對 Argon2id 的最低建議是 19 MiB、迭代 2 次、1 條通道。記憶體有限時,RFC 9106 建議 64 MiB、迭代 3 次、4 條通道。記憶體越多,防護越強;請逐步提高,直到一次雜湊的時間達到伺服器每次登入所能負擔的上限。
Argon2 還是 bcrypt?
新系統請用 Argon2id。兩者都刻意設計得很慢,但 Argon2 還需要大量記憶體,讓 GPU 破解的成本變高,而且沒有 72 位元組的密碼長度限制。bcrypt 歷史較久,幾乎到處都有支援,在無法使用 Argon2 的地方仍是合理的選擇。
$argon2id$ PHC 字串是什麼?
這是 Argon2 參考實作儲存雜湊的格式:變體、版本(v=19)、以 KiB 為單位的記憶體(m)、迭代次數(t)、通道數(p),接著是不含填充的 Base64 鹽值與雜湊。在這裡產生的字串,與參考函式庫(libargon2)對相同輸入寫出的結果逐字相同,libsodium 的 crypto_pwhash_str_verify 也能接受(Argon2id 與 Argon2i,雜湊長度 16 位元組以上)。
為什麼記憶體不能超過 1 GiB?
因為雜湊在瀏覽器分頁中執行,而 WebAssembly 的記憶體有限制:單次配置無法達到 2 GiB,手機甚至常常拒絕小得多的配置。因此本頁的上限是 1 GiB,需要更多記憶體的雜湊(例如 RFC 9106 的 2 GiB 選項)無法在這裡產生或驗證。