# Scrypt 生成器

使用随机盐值或自定义盐值，从密码派生 scrypt 密钥。选择最高为 15 的成本指数（N 最高为 32768）、最高为 8 的区块大小 r、最高为 4 的并行度 p，以及 16 到 64 字节的密钥长度。该工具遵循 RFC 7914，并以十六进制或 Base64 格式返回密钥、所用盐值和参数，可用于与 Node.js crypto.scrypt、Python hashlib 或 libsodium 的结果进行比较。密码不会回显。

## 常见问题

### 什么是 scrypt？

Scrypt 是 Colin Percival 设计的一种内存密集型密钥派生函数，已通过 RFC 7914 标准化。它根据密码和盐值派生密钥，同时强制每次尝试都使用大量内存。它用于密码存储、磁盘加密和一些加密货币。

### N、r 和 p 分别代表什么？

N 是 CPU 和内存成本，必须是 2 的幂；r 是区块大小；p 是并行化系数。内存用量约为 128 乘以 N 再乘以 r 字节，因此 N = 16384 且 r = 8 时需要 16 MiB。此处 N 最高为 32768，r 最高为 8，p 最高为 4。

### 默认参数是什么？

默认值为 N = 16384（成本指数 14）、r = 8、p = 1，密钥长度为 32 字节；这是 scrypt 论文推荐的交互式设置。请在系统允许的范围内增大 N，以加强保护。

### 盐值如何选择？

如果盐值字段留空，工具会生成 16 个随机字节，并在结果中显示。如果你输入盐值，则会使用其 UTF-8 字节，这样便可复现由其他系统生成的密钥。不同密码绝不能重复使用同一个盐值。

### 可以复现 RFC 7914 测试向量吗？

可以。密码 pleaseletmein、盐值 SodiumChloride、成本指数 14、r = 8、p = 1 和 64 字节密钥会得到 7023bdcb3afd7348461c06cd81fd38ebfda8fbba904f8e3ea9b543f6545da1f2d5432955613f0fcf62d49705242a9af9e61e85dc0d651e40dfcf017b45575887，即 RFC 的第三个测试向量。

### 为什么参数设有上限？

Scrypt 会分配实际内存，并在共享服务器上运行。将 N 限制为 32768、r 限制为 8、p 限制为 4，可将每次派生的内存用量控制在约 32 MiB 以内，耗时控制在一两秒。

### 如何存储 scrypt 密码哈希？

请将密钥、盐值以及 N、r 和 p 一并存储，因为之后检查密码时需要用到这些值。像 Node.js crypto.scrypt 这样的库会将存储格式交由你决定，而其他库则使用各自的字符串格式。

### 结果中会包含我的密码吗？

不会。响应中包含密钥、盐值和参数，但绝不包含密码。任何内容都不会被记录或存储。

### 我应该使用 scrypt 还是 Argon2？

两者都具有内存硬性，适合用于密码。Argon2id 是较新的推荐方案，也更容易调整；而 scrypt 在 Node.js 和 Python 等标准库中得到广泛支持。

### hex 和 Base64 选项会改变什么？

这些选项会改变结果中密钥和盐值的表示方式。字节内容相同，因此请选择代码能够读取的形式。

在这里投放广告？

[给我们发邮件](mailto:hi@dennn.is?subject=%E5%9C%A8%20OneClick%20Pro%20%E4%B8%8A%E6%8A%95%E6%94%BE%E5%B9%BF%E5%91%8A)

[广告 适用于 WordPress 的智能体就绪型插件套件。](https://sleekwp.com/?ref=oneclickpro)
