数据安全提示: 所有计算均在您的浏览器本地完成,密码和盐值不会上传到服务器。
Scrypt 密码哈希计算器
基于 scrypt-js
输入类型:
输出格式:
当前操作:密码 → Scrypt哈希 (hex)
盐值 (Salt)
长度: 0 字符
输入密码
长度: 19
熵值: ~95位
密码强度
强
输入文本
字符数: 13
N (成本因子)
16384
2^10=1024
2^20=1M
r (块大小)
8
p (并行)
1
输出长度
32
内存需求: ~16 MB
估计时间: ~1 秒
Scrypt 哈希结果
计算结果将显示在这里...
等待输入...
计算时间: 0.00 秒
Scrypt 算法原理
Scrypt = PBKDF2 + 内存硬混合 (ROMix)
① 初始化
PBKDF2-HMAC-SHA256(密码, 盐值, 1, p×128×r) 生成初始块。
② 内存填充
生成 N 个块 (每个 128×r 字节) 存储在内存中。
③ 随机访问
反复读取内存块并混合,造成大量内存依赖。
④ 最终混合
再次使用 PBKDF2 生成指定长度的派生密钥。
安全特性
- 内存硬特性 — 强制消耗大量内存,GPU/ASIC 攻击成本激增
- 抗 GPU 攻击 — 显存限制导致并行度低
- 抗 ASIC 攻击 — 大容量内存集成困难且昂贵
- 可调节参数 — 随硬件发展可逐步增加 N / r / p
- 内置盐值 — 防止彩虹表预计算
使用示例
"MySecurePassword123" (默认参数)
"password" (弱密码示例)
"CorrectHorseBatteryStaple" (高熵)
实现指南
✅ 最佳实践
- 每个密码使用唯一随机盐值 (≥16字节)
- 推荐 N=16384, r=8, p=1 (交互式登录)
- 定期评估并提高参数
- 在后端执行 Scrypt,避免浏览器过载
❌ 常见错误
- 盐值重复或过短
- 参数过低 (N<2^14) 无法抵抗暴力破解
- 前端设置过高参数导致页面卡死
- 不存储盐值和参数导致无法验证