默认值遵循 OWASP 的 Argon2id 配置(64 MiB、3 轮)。首次哈希还会加载 WASM 运行时(约 25 KB)- 一切都在浏览器中运行。
-
-
Argon2id - 密码哈希竞赛获胜算法。内存困难型:成本由内存而非 CPU 速度决定,GPU 和 ASIC 无法给攻击者带来优势。100% 客户端运行 (WASM) - 密码永远不会离开你的设备。
功能说明
Argon2 哈希与校验工具使用 Argon2id 对密码进行哈希 —— 它是 2015 年 Password
HashingHashingA one-way function that maps data of any size to a fixed-length digest. Same input, same digest; any change, different digest; not reversible.
Competition 的优胜者,也是 bcrypt 和 PBKDF2 的现代继任者 —— 并能校验已有的 Argon2 哈希。三个成本参数由你掌控:内存(默认 64 MiB)、迭代(默认 3 轮)和并行度(lanes)。一切通过 WebAssembly 在你的浏览器中运行:密码永远不会离开你的设备。输出是一个自包含的 PHC 字符串,可以直接存进数据库:
$argon2id$v=19$m=65536,t=3,p=1$<salt>$<hash>
它内嵌了算法、版本、全部成本参数、随机盐和摘要 —— 因此校验只需要这个字符串和密码本身。
使用方法
- 选择哈希,输入密码,可选地调整内存 / 迭代 / 并行度 / 哈希长度。
- 按哈希 —— 复制编码后的 PHC 字符串(你要存储的东西)或原始十六进制摘要。
- 要用密码核对已存储的哈希,切换到校验,粘贴
$argon2id$…字符串,按校验 —— 工具还会显示从字符串中解析出的参数。
示例
- 新用户注册(服务端类比):
argon2Hash(password)→ 把编码后的字符串存入你的users行。登录时,argon2Verify(encoded, password)判定是否匹配。 - 跨实现核对:
password/somesalt,m=65536、t=2、p=4、32 字节摘要 →1a9677b0afe81fda…—— 与golang.org/x/crypto/argon2在相同输入下完全一致。 - 调参: m=19456(19 MiB)、t=2、p=1 是 OWASP 的最低可接受档位;m=65536、t=3、p=1(本工具的默认值)是推荐档位。
补充说明
- 为什么内存困难性重要: bcrypt 和 PBKDF2 只消耗 CPU 时间。Argon2id 的成本由内存决定 —— 攻击者每次猜测都必须为它投入 64 MiB 内存,因此 GPU(核心快、每核内存稀缺)和 ASIC 失去优势。一台笔记本和一座 GPU 农场每次猜测的成本大致相同。
- 为什么是 Argon2id: Argon2i 抗侧信道(数据无关的内存访问,适合跑在服务器上);Argon2d 抗 GPU 攻击。Argon2id 是两者的混合,为密码存储所推荐。
- 存储编码字符串,而不是十六进制摘要 —— PHC 字符串携带参数和盐,因此未来的登录不依赖今天的配置。
- 校验任意变体: 工具会从字符串本身自动检测 argon2d / argon2i / argon2id。
- 私密: 哈希 100% 在 WASM 中客户端运行(参考实现 Argon2 v1.0.2)—— 可以放心使用真实密码。
- 相关工具: Password Generator、Passphrase Generator、Password Strength Analyser、
HMACHMACA construction that combines a hash function with a secret key to prove a message is intact and came from someone holding the key.
Generator。