数据安全提示: 所有计算均在您的浏览器本地完成,密码和盐值不会上传到服务器。
Argon2密码哈希计算器
基于 argon2-browser
Argon2变体:
输出格式:
当前操作:Argon2id密码哈希
3
64 MB
4
32
密码
长度: 19
强度: 强
内存使用模拟
64 MB
Argon2哈希结果
等待计算...
输入密码并点击计算
长度: 0
Argon2算法原理
Argon2是一种内存硬性密钥派生函数,2015年密码哈希竞赛获胜者。
内存硬性
强制使用大量内存,增加攻击成本,抵抗GPU/ASIC并行攻击。
三种变体
Argon2i(抗侧信道)、Argon2d(抗GPU)、Argon2id(混合,推荐)。
参数调节
迭代次数、内存大小、并行度、哈希长度均可调,适应不同安全需求。
安全优势
抗彩虹表、抗碰撞、可调节、被RFC 9106标准化。
变体比较
Argon2id 推荐
混合模式:前半部分使用Argon2i,后半部分使用Argon2d,平衡抗侧信道和抗GPU攻击,适合通用密码存储。
Argon2i
数据独立访问,抗侧信道攻击,适用于密钥派生和密码哈希,但对GPU攻击的抵抗力稍弱。
Argon2d
数据相关访问,抗GPU攻击最强,但可能受侧信道攻击,适合加密货币挖矿等场景。
参数配置指南
- 迭代次数 (timeCost):增加线性增加计算时间,推荐3~5。
- 内存大小 (memoryCost):核心安全参数,推荐64MB以上(2^16 KB)。
- 并行度 (parallelism):利用多核,推荐等于CPU核心数,通常4。
- 哈希长度 (hashLength):至少16字节,推荐32字节。
- 盐值:至少16字节随机数,防止彩虹表。
例:Argon2id, time=3, memory=64MB, parallelism=4, hashLen=32 为OWASP推荐配置。
安全性分析
$1.2M
GPU破解成本 (64MB/哈希)
18年
8字符密码暴力破解时间
64GB
并行攻击所需内存
Argon2的内存硬性使得攻击者需要大量内存,显著提高攻击成本。
使用示例
简单密码 MySecurePassword123!
弱密码示例 password123
长密码 ThisIsAVeryLongPassword...
// Node.js 示例
const argon2 = require('argon2');
const hash = await argon2.hash('password', {
type: argon2.argon2id,
memoryCost: 65536, // 64MB
timeCost: 3, parallelism: 4
});
const argon2 = require('argon2');
const hash = await argon2.hash('password', {
type: argon2.argon2id,
memoryCost: 65536, // 64MB
timeCost: 3, parallelism: 4
});