无需登录 数据私有 本地保存

Argon2 密码哈希生成器 - 内存硬抗破解

10
0
0
0
Argon2 密码哈希生成器
Memory-Hard

Argon2 是密码哈希竞赛冠军,专为抵抗 GPU/ASIC 暴力破解而设计的内存硬哈希算法。

混合模式,平衡侧信道抵抗与GPU抗性,适合大多数场景。
留空将自动生成16字节随机盐值。盐值可公开,但每个密码必须唯一。
16 MB512 MB
110
18
16 B64 B
较大内存参数可能需要几秒计算时间
哈希结果
尚未生成哈希,请配置参数后点击生成按钮。
已复制到剪贴板
验证密码

使用已有的 Argon2 哈希(PHC Encoded 格式)验证密码是否匹配。

常见问题与知识点
什么是 Argon2?为什么它被称为"内存硬"哈希?

Argon2 是 2015 年密码哈希竞赛(PHC)的冠军算法,由 Alex Biryukov、Daniel Dinu 和 Dmitry Khovratovich 设计。"内存硬"意味着它在计算时需要大量内存(可配置),这使得 GPU、FPGA 和 ASIC 等硬件难以并行暴力破解。攻击者即使拥有大量计算资源,也会因内存带宽瓶颈而大幅降低破解速度。

Argon2id、Argon2i、Argon2d 有什么区别?

Argon2i:独立于数据的内存访问模式,对侧信道攻击(如时序攻击)抵抗最强,但对GPU攻击的抵抗较弱。适合不需要保护盐值机密的场景。
Argon2d:依赖数据的内存访问模式,对GPU攻击抵抗最强,但可能受侧信道攻击影响。适合没有侧信道威胁的环境。
Argon2id:混合模式,前半段使用Argon2i,后半段使用Argon2d,平衡了两者的优势,是OWASP推荐的默认选择。

OWASP 推荐的 Argon2 参数是什么?

OWASP(开放Web应用安全项目)推荐使用 Argon2id,内存成本至少 64MB,时间成本(迭代次数)至少 3,并行度 1。对于高安全性需求,建议内存成本提升至 128MB 或更高,迭代次数提升至 5-6。这些参数应根据服务器硬件能力和用户容忍的延迟来调整。

盐值(Salt)为什么重要?应该多长?

盐值是一个随机值,与密码一起哈希。它的作用是确保即使两个用户使用相同的密码,哈希结果也完全不同,从而防止彩虹表攻击和批量破解。Argon2 推荐盐值长度为 16字节(128位)。盐值不需要保密,但每个密码必须使用唯一的盐值。本工具会自动生成16字节随机盐值。

PHC 编码格式是什么?

PHC(Password Hashing Competition)格式是密码哈希的标准字符串表示,形如 $argon2id$v=19$m=65536,t=3,p=1$salt$hash。它包含了算法标识、版本、参数(内存、时间、并行度)、盐值和哈希值,所有信息都编码在一个字符串中,便于存储和验证。推荐使用此格式保存哈希。

Argon2 与 bcrypt、scrypt 相比如何?

bcrypt:老牌算法,对GPU有一定抵抗但内存使用固定(4KB),面对现代硬件逐渐力不从心。
scrypt:内存硬哈希的先驱,可配置内存使用,但存在时间-内存权衡漏洞。
Argon2:三者中最新的算法,修复了scrypt的权衡漏洞,提供更灵活的内存和并行度配置,抗GPU/ASIC能力最强,被普遍认为是当前最安全的密码哈希算法。

在浏览器中生成 Argon2 哈希安全吗?

本工具使用 WebAssembly 实现在浏览器端完成所有计算,密码不会发送到任何服务器。然而,由于浏览器是单线程环境,大内存参数可能导致页面短暂卡顿。对于生产环境的密码存储,建议在服务器端使用专门的原生库(如 libsodium、argon2-cffi)进行哈希计算,以获得更好的性能和安全性。