Argon2 哈希计算
免费在线 Argon2 哈希计算 工具。100% 本地计算,数据不离开您的设备,隐私安全有保障。
Verify: input format is "password|hash"
结果将显示在这里...
输入 → 计算哈希
使用指南
关于 Argon2
Argon2 是 2015 年密码哈希竞赛(Password Hashing Competition)的冠军算法,由卢森堡大学设计。它是目前最安全的密码哈希算法,被 OWASP、NIST 等权威机构推荐用于密码存储。Argon2 有三个变体:Argon2d(抗 GPU)、Argon2i(抗侧信道攻击)、Argon2id(混合模式,推荐)。与传统哈希算法不同,Argon2 具有可调节的计算成本和内存消耗,能有效抵御暴力破解、GPU 攻击和 ASIC 攻击。
使用步骤
Argon2 支持密码哈希和验证两种操作:
算法特点
Argon2 专为密码存储设计,具有以下独特优势:
三个变体对比
Argon2 有三个变体,适用于不同场景:
常见问题
Q: Argon2 和 bcrypt/PBKDF2 有什么区别?
A: Argon2:现代算法(2015),内存困难,抗 GPU/ASIC,OWASP 首选。bcrypt:经典算法(1999),计算困难,抗 GPU 能力中等,广泛使用但逐渐被 Argon2 取代。PBKDF2:标准算法(2000),计算困难,易受 GPU 攻击,需要极高迭代次数(≥ 600k)才安全。性能对比:在相同安全级别下,Argon2 比 bcrypt 快 2-3 倍,比 PBKDF2 快 10 倍以上。推荐:新项目使用 Argon2id,现有项目逐步迁移到 Argon2。
Q: Argon2 的参数应该如何配置?
A: OWASP 推荐配置:内存成本(m):47104 KB(约 47MB),服务器性能好可增至 64MB 或更高。时间成本(t):1-3 次迭代,通常 1 次即可。并行度(p):1(单线程),避免并行攻击。哈希长度:32 字节(256 位)。调优方法:在开发环境测试,确保单次哈希耗时 0.5-1 秒,然后根据服务器性能调整。注意:参数越高越安全,但会增加服务器负载和响应时间。
Q: 为什么 Argon2 比 SHA-256 更适合密码存储?
A: SHA-256 是通用哈希函数,设计目标是快速计算,这在密码存储场景下是致命弱点。GPU 可以每秒计算数十亿次 SHA-256,即使加盐也容易被暴力破解。Argon2 的优势:1)慢速设计:单次哈希耗时 0.5-1 秒,大幅降低暴力破解速度。2)内存困难:需要大量内存(64MB),GPU 和 ASIC 无法并行攻击。3)可调成本:随着硬件升级,可以增加参数保持安全性。结论:密码存储必须使用专门的密码哈希算法(Argon2、bcrypt、PBKDF2),不要使用通用哈希函数(SHA-256、MD5)。
Q: Argon2 的哈希字符串格式是什么?
A: Argon2 使用 PHC(Password Hashing Competition)字符串格式:$argon2id$v=19$m=65536,t=3,p=1$saltbase64$hashbase64。各部分含义:$argon2id:算法变体(id/i/d)。v=19:算法版本(当前为 19)。m=65536,t=3,p=1:内存成本(KB)、时间成本(迭代次数)、并行度。saltbase64:Base64 编码的盐值(16 字节)。hashbase64:Base64 编码的哈希值(32 字节)。优点:自包含所有参数,验证时无需额外存储,便于未来升级。
Q: 如何从 bcrypt 迁移到 Argon2?
A: 渐进式迁移方案:1)双重验证:保留 bcrypt 验证逻辑,新用户和密码修改时使用 Argon2。2)透明升级:用户登录时,先用 bcrypt 验证,验证成功后立即用 Argon2 重新哈希并更新数据库。3)标识字段:在数据库添加字段标识哈希算法类型(bcrypt/argon2)。4)完全迁移:经过一段时间(如 6 个月),大部分活跃用户已迁移,可以强制要求剩余用户重置密码。注意:bcrypt 和 Argon2 的哈希格式不同,可以通过前缀($2a$ vs $argon2id$)自动识别。
Q: Argon2 在浏览器中计算会不会太慢?
A: Argon2 的设计目标就是慢速计算,这是安全性的保证而非缺陷。在浏览器中计算 Argon2,单次哈希耗时 0.5-1 秒,这对用户体验影响很小(用户输入密码后等待 1 秒是可接受的)。优化建议:1)异步计算:使用 Web Worker 在后台计算,避免阻塞 UI。2)进度提示:显示“正在加密...”的提示,改善用户体验。3)参数调整:浏览器环境可以适当降低内存成本(如 32MB),但不要低于 OWASP 最低推荐(47MB)。注意:服务端验证时也需要相同的计算时间,这是 Argon2 的核心安全机制。
使用场景
推荐:用户密码存储
推荐:API 密钥哈希
推荐:加密货币钱包
加密货币钱包需要用密码保护私钥。使用 Argon2d(数据依赖型)从用户密码派生加密密钥,然后用该密钥加密私钥。Argon2d 的抗 GPU 特性使暴力破解钱包密码成本极高。注意:钱包场景通常使用 Argon2d 而非 Argon2id,因为侧信道攻击风险较低,而抗 GPU 能力更重要。
- ✅ Argon2d(抗 GPU,钱包推荐)
- ✅ Argon2id(更全面的安全)
- scrypt(经典选择,比特币核心使用)
- 💡 结合硬件钱包提供更高安全性
推荐:文件加密密钥派生
使用 Argon2 从用户密码派生文件加密密钥。用户提供密码后,Argon2 生成固定长度的密钥(如 256 位),然后用该密钥加密文件(如使用 AES-256-GCM)。盐值和 Argon2 参数存储在文件头部,解密时提取参数并重新派生密钥。这种方案广泛应用于加密压缩包(如 7-Zip、WinRAR)和磁盘加密(如 VeraCrypt)。
- ✅ Argon2id(推荐)
- ✅ Argon2i(抗侧信道)
- scrypt(经典选择)
- 💡 盐值和参数存储在文件头部
推荐:双因素认证备份码
不推荐:实时性能敏感场景
Argon2 的慢速特性使其不适合需要极高性能的场景,如高频 API 认证、实时游戏登录、物联网设备认证等。这些场景应使用基于令牌的认证(如 JWT、OAuth)或会话管理,而不是每次请求都进行密码哈希。Argon2 只在用户登录时使用一次,验证成功后颁发令牌,后续请求使用令牌认证。
- ✅ JWT + HMAC-SHA256(高性能)
- ✅ Session + Cookie(传统方案)
- ✅ OAuth 2.0(标准协议)
- ❌ 不要在高频场景使用 Argon2
最佳实践建议
- Argon2id 是密码存储的最佳选择,推荐用于所有新项目。现有项目应逐步从 bcrypt/PBKDF2 迁移到 Argon2。
- 参数配置遵循 OWASP 推荐:m ≥ 47MB, t ≥ 1, p = 1。服务器性能好可以增加内存成本到 64MB 或更高。
- 不要在高频场景使用 Argon2,应结合令牌认证(JWT、Session)实现高性能。
- 从 bcrypt 迁移时使用渐进式方案:保留 bcrypt 验证,新用户和密码修改时使用 Argon2,登录时透明升级。
- 浏览器环境计算 Argon2,配合 Web Worker 和进度提示改善用户体验。