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=…$盐$哈希),也输出原始 hex,还可以校验密码是否与已有的 PHC 字符串匹配。工具在浏览器中运行,密码不会离开你的设备;免费,无需注册。
如何生成和校验 Argon2 哈希
- 输入密码。哈希会随输入实时生成,并显示在你的设备上耗时多久。
- 选择一个预设,或按服务器的配置设置内存、迭代次数和并行度。
- 复制 PHC 字符串,或复制 hex 格式的原始哈希和盐。
- 要校验已存储的哈希,把它和密码一起粘贴到“校验密码与哈希”下:会显示“匹配”或“不匹配”。
功能
- 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 字节盐,或以文本、hex、Base64 输入自己的盐(8–1024 字节)
- PHC 字符串,以及 hex 格式的原始哈希和盐,每项都有“复制”按钮
- 校验 $argon2id$、$argon2i$ 和 $argon2d$ 字符串(v=19 或 v=16),参数直接从哈希中读取
隐私安全吗?
是的。Argon2 在浏览器中通过 WebAssembly 在后台 Worker 里运行,盐来自浏览器的安全随机数生成器。密码不会上传或保存。
常见问题
选 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 选项)无法在这里生成或校验。