Argon2 与 scrypt 哈希

在浏览器中用 Argon2id 或 scrypt 对密码进行哈希,并将 Argon2 哈希与密码进行校验。

正在加载工具…

Argon2 与 scrypt 哈希输入密码,选择 Argon2id 或 scrypt,调整内存、迭代次数和并行度,然后点击「哈希」即可得到带盐的密码哈希。你也可以粘贴一个 Argon2 哈希和一个密码来检查二者是否匹配。所有计算都通过按需加载的 WebAssembly 哈希函数在本地完成,密码和哈希都不会发送到服务器。

Argon2 与 scrypt 哈希 是什么?

Argon2 与 scrypt 哈希是一款免费的在线密码哈希工具,使用 Argon2id(密码哈希竞赛的获胜算法)或 scrypt 将明文密码转换为缓慢、内存密集型的哈希。后端开发者、安全工程师和 CTF 选手用它来生成测试凭据、复现已存储的哈希,或在不启动服务器的情况下确认登录密码能否与现有的 Argon2 记录校验通过。用顶部的 Argon2id / scrypt 切换选择算法,打开「参数」设置内存大小、迭代次数、并行度(Argon2)或代价因子和块大小(scrypt),然后点击「哈希」生成带盐摘要,每次都会使用一个全新的随机 16 字节盐。校验区接收一个密码和一个 Argon2 PHC 哈希($argon2id$... 字符串),并告诉你二者是否匹配。

如何使用 Argon2 与 scrypt 哈希

  1. 用顶部的算法切换选择 Argon2id 或 scrypt。
  2. 打开「参数」,设置内存、迭代次数和并行度(Argon2)或代价因子和块大小(scrypt),以匹配你的目标。
  3. 在「密码」字段中输入要哈希的密码。
  4. 点击「哈希」,输出区会出现一个带新随机盐的哈希,可直接复制。
  5. 若要校验密码,将密码和一个 Argon2 哈希粘贴到校验区并点击「校验」,即可看到匹配或不匹配的结果。

示例

用 Argon2id 对密码进行哈希

保持切换在 Argon2id,使用默认的 19 MiB / 2 次迭代 / 1 个通道,输入密码并点击「哈希」。输出是形如 $argon2id$v=19$m=19456,t=2,p=1$<盐>$<哈希> 的 PHC 字符串,已包含参数和盐,因此可以直接存储并在之后校验。

用 Argon2 哈希校验密码

把一个已有的 $argon2id$... 哈希粘贴到「待校验哈希」字段,在上方输入候选密码,然后点击「校验」。工具会报告该密码是否与这个确切的哈希匹配。

用 scrypt 派生密钥

将切换改为 scrypt,设置代价因子指数(例如 15 = 2^15)和块大小 8,然后哈希。输出会在十六进制摘要旁记录 n、r、p 参数和盐,以便复现结果。

常见问题

我的密码或哈希会被发送到任何地方吗?
不会。密码、盐和生成的哈希都保留在你的浏览器中。Argon2 和 scrypt 函数以按需加载的 WebAssembly 运行,没有任何内容会上传到或存储在任何服务器上,因此该工具可离线使用,你的机密绝不会离开页面。
Argon2id 和 scrypt 有什么区别?
二者都是缓慢、内存密集型的密码哈希函数,旨在抵御 GPU 和 ASIC 破解。Argon2id 赢得了密码哈希竞赛,是现代默认选择;scrypt 更早出现但仍被广泛部署。用切换按钮选择你的系统所期望的那一种。
为什么即使密码相同,哈希每次都不一样?
每次哈希都使用一个全新的随机 16 字节盐,因此相同的密码每次运行都会产生不同的哈希。这是有意为之且正确的;盐已嵌入输出中,所以哈希之后仍可校验。
我也能校验 scrypt 哈希吗?
校验支持 Argon2 PHC 哈希(以 $argon2 开头的字符串)。scrypt 没有标准的编码格式,因此这里它的输出仅供参考,校验器不接受它。
内存、迭代次数和并行度设置有什么作用?
它们控制哈希所需的计算量。更高的内存和迭代次数会让哈希更慢、更难破解,但计算也更慢;并行度设置使用多少个通道。请调整它们以匹配你正在测试的系统的配置。

相关工具