UTILS.
100% 浏览器内运行
🧂

scrypt KDF 哈希生成器与验证器

以可配置的 N、r、p 成本从密码派生 scrypt 密钥,或对照存储的 scrypt 字符串验证密码。完全在你的浏览器中运行。

密码 100% 在你的浏览器中哈希——不上传任何内容。

— 输出将显示在这里 —

关于此工具

scrypt KDF 哈希生成器与验证器在你的浏览器本地派生和检验 scrypt 输出。scrypt 由 Colin Percival 设计并在 RFC 7914 中标准化,是一种内存困难的密钥派生函数:其成本被有意地由内存带宽主导,使定制破解硬件几乎没有优势。流程为 PBKDF2-HMAC-SHA256 扩展密码、基于 BlockMix 和 Salsa20/8 核心构建的 ROMix 函数以强制大量顺序内存使用,以及最终的 PBKDF2-HMAC-SHA256 以产生你所选长度的派生密钥。

生成模式从 crypto.getRandomValues 读取 16 个随机盐字节,并以三个成本参数运行 scrypt:N 是 CPU/内存成本且必须是二的幂(默认 16384 = 2^14),r 是块大小(默认 8),p 是并行化因子(默认 1)。内存使用约为 128 · N · r 字节——在默认值下约 16 MiB——当你的设置将超过 256 MiB 时工具会警告。输出是自描述字符串 $scrypt$ln=14,r=8,p=1$<base64 salt>$<base64 key>,其中 ln = log2(N),因此验证所需的每个参数都随哈希携带。

验证模式从该字符串中解析 ln、r、p、盐和存储的密钥,用候选密码重新计算派生密钥,并进行常数时间比较以报告匹配或不匹配。scrypt 核心作为无 eval 的 WebAssembly 版本在浏览器的严格安全策略下运行,因此密码 100% 在你的浏览器中处理,不上传任何内容。

常见问题

为什么 N 必须是二的幂?
scrypt 的 ROMix 步骤索引一个恰好 N 块的表,并依赖 N 为二的幂来进行其取整与掩码寻址。工具会拒绝非二的幂的值。典型选择为交互式用途 16384(2^14),文件加密 1048576(2^20)。
scrypt 使用多少内存?
约 128 · N · r 字节。在默认 N=16384、r=8 下约为 16 MiB。由于浏览器会真实分配这些内存,较大的 N 或 r 值在低 RAM 设备上可能缓慢或失败——工具在超过 256 MiB 时警告。
r 和 p 控制什么?
r 是块大小,它同时缩放内存使用和每块的顺序工作量;增大 r 会与 N 一同提高内存成本。p 是并行化因子,运行 p 个独立的 scrypt 计算,这会提高 CPU 成本而不提高每实例的内存占用。
生成的哈希是什么格式?
一个自描述字符串 $scrypt$ln=<log2 N>,r=<r>,p=<p>$<base64 salt>$<base64 key>。它内嵌每个参数,因此验证模式只需该字符串和密码。所有计算都在本地——不上传任何内容。

更多工具