# 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 哈希。

在这里投放广告？

[给我们发邮件](mailto:hi@dennn.is?subject=%E5%9C%A8%20OneClick%20Pro%20%E4%B8%8A%E6%8A%95%E6%94%BE%E5%B9%BF%E5%91%8A)

[广告 适用于 WordPress 的智能体就绪型插件套件。](https://sleekwp.com/?ref=oneclickpro)
