反馈

scrypt密码生成校验

派生 / 生成
0%

    

校验
派生与校验全部在浏览器本地完成,密码不上传。相关: Bcrypt · 随机密码 · MD5 · SHA · HMAC

📖 工具说明

1. scrypt 是什么

scrypt 是一个「慢哈希」密码派生函数(KDF)。和 MD5 / SHA 不同,它故意设计得又慢又耗内存:算一次要占用 128 × N × r × p 字节内存。这让攻击者没法用 GPU / ASIC 大规模并行爆破 —— 加内存比加算力贵得多。它常用于密码存储和从口令派生加密密钥(如钱包)。

2. 参数

参数 含义 说明
N CPU / 内存开销 必须是 2 的幂。工具里填指数,N = 2^logN。越大越慢越耗内存。
r 块大小 一般固定 8。
p 并行度 一般 1。
dkLen 派生长度(字节) 密码存储用 32 足够;派生对称密钥按算法需要(AES-256 用 32)。
Salt 盐 每个密码一份的随机值,防彩虹表。留空工具会随机生成 16 字节。

强度建议(OWASP 密码存储备忘单):登录验证用 N=2¹⁷ (131072)、r=8、p=1(约 128 MB 内存)。低配环境可降到 2¹⁴;离线的高价值密钥可用 2²⁰。参数必须和验证时一致,所以要连同 N/r/p 一起存进「存储串」。

3. 这个工具能做什么

派生和校验全部在浏览器本地完成,密码不上传。别在任何在线页面输入生产环境的真实密码,本工具仅用于学习和测试。

4. 使用步骤

  1. 派生:填密码 → 选「登录验证」预设(或自定义)→ 点「派生」→ 复制存储串存进数据库。
  2. 校验:把数据库里的存储串和用户输入的密码填进「校验」区 → 点「校验」。

5. 常见问题(FAQ)

Q:结果和 Node.js crypto.scryptSync / Python hashlib.scrypt 一样吗? A:一样,只要参数(N、r、p、dkLen、salt)和密码字节(本工具按 UTF-8)都相同。本工具用的是 scrypt-js,与各语言标准实现互通。

Q:为什么算得很慢 / 浏览器卡住? A:N 太大。N=2²⁰、r=8 要约 1 GB 内存,纯 JS 实现会很慢甚至失败。日常测试用 2¹⁴~2¹⁷。

Q:scrypt 和 bcrypt、Argon2 怎么选? A:都比 PBKDF2 好。新项目首选 Argon2id;没有 Argon2 库时 scrypt 是很好的替代;bcrypt 仍安全但不耗内存、且有 72 字节密码截断问题。

Q:N 一定要是 2 的幂吗? A:是。这个工具让你填指数 logN,自动保证是 2 的幂。

Q:盐要保密吗? A:不用。盐和 N/r/p 一样是公开参数,和哈希一起存即可,它的作用是让每个密码的哈希都不同。


相关:Bcrypt · 随机密码生成 · MD5 · SHA · HMAC · 文字加解密。

📖 了解原理

📖 相关推荐