跳转到正文

Argon2 生成器

生成 Argon2id 密码哈希,使用随机的 16-byte 盐值,并可自行选择内存、迭代次数、并行度和哈希长度。内存上限为 64 MiB,迭代次数上限为 4;默认值遵循 OWASP 基准,即 19 MiB 和 2 轮。工具会返回以 $argon2id$v=19$ 开头的标准 PHC 字符串,可由 PHP、libsodium 和 argon2 库验证。密码绝不会回显。

重置

常见问题

什么是 Argon2id?

Argon2 在 2015 赢得了密码哈希竞赛,并在 RFC 9106 中进行了规范。Argon2id 是混合变体,可抵御侧信道攻击和 GPU 攻击。OWASP 和该 RFC 都推荐使用此变体存储密码。

内存、迭代次数和并行度设置分别是什么意思?

内存设置每个哈希使用多少 MiB,迭代次数设置对该内存运行多少轮,平行度则设置通道数量。增加内存和迭代次数会提高攻击者每次猜测的成本。此处内存范围为 1 到 64 MiB,迭代次数范围为 1 到 4,并行度范围为 1 到 4。

应该使用哪些设置?

默认值为 19 MiB、2 次迭代和 1 个通道,这是 OWASP 对 Argon2id 的最低要求。PHP 的默认值为 64 MiB 和 4 次迭代,你也可以在此复现。用于生产环境时,应为每次登录尽可能提供服务器可承受的内存。

为什么内存和迭代次数有上限?

每个哈希都会实际分配你所请求的内存,并在共享服务器上运行每一轮计算。将上限设为 64 MiB 和 4 次迭代,可使每个请求只需不到一秒,同时仍覆盖常见的生产环境设置。

输出字符串包含什么?

例如 $argon2id$v=19$m=19456,t=2,p=1$ 后跟盐值和哈希的结果字符串,列出了变体、版本、以 KiB 为单位的内存、迭代次数和通道数。盐值和哈希使用无填充的 Base64 编码。请保存整个字符串,因为验证时会从中读取所有参数。

为什么每次生成的哈希都不同?

每个请求都会使用一个全新的随机 16-byte 盐值,因此同一密码每次都会生成不同的字符串。只要密码正确,它们都能通过验证。

可以选择哈希长度吗?

可以,范围为 16 到 64 bytes,默认值为 32 bytes。较长的标签不会增加猜测难度,因此存储密码时 32 bytes 就足够了。

哪些系统接受这些哈希?

PHP、libsodium 的 crypto_pwhash_str_verify、Node.js 的 argon2 包、Python 的 argon2-cffi 和 Spring Security 都能读取 PHC 字符串格式。本网站的 Argon2 Verifier 也可以验证这些字符串。

我的密码会被存储或返回吗?

不会。密码只会在内存中用于计算哈希,并会从响应中移除。它绝不会被记录或保存。

我可以生成 Argon2i 或 Argon2d 哈希吗?

不可以。此工具只生成 Argon2id,因为它是推荐用于密码的变体。Argon2 Verifier 仍可接受 Argon2i 和 Argon2d 哈希。

关于 OneClick Pro

OneClick Pro 是一个免费的工具集合,包含超过 150 种网络工具,助你处理日常工作:转换图像和单位、格式化和验证代码、检查域名和 SEO,以及处理文本、日期和数字。所有工具均可免注册、免订阅使用;你输入的内容仅用于计算结果,绝不会被存储。你可以将它用作处理临时任务的快捷工具箱,也可以收藏每天都会用到的工具。