SCrypt哈希生成

内存密集型密钥派生函数

SCrypt 哈希工具

内存约 16.0 MB,输出 256 位

哈希结果

工具概述

SCrypt 是一种基于密码的密钥派生函数(KDF),由 Colin Percival 设计。它不仅像 BCrypt 一样需要大量 CPU 计算,还需要大量内存,使其对 GPU/ASIC 攻击具有更强的抵抗力。SCrypt 被用于 Litecoin、Dogecoin 等加密货币的挖矿算法。

SCrypt 的三个关键参数:

  • N(Cost):CPU/内存成本参数,必须是 2 的幂。越大越安全,但计算越慢。
  • r(Block size):块大小参数,影响内存使用量。默认 8。
  • p(Parallelism):并行化参数,控制可以并行运行的线程数。默认 1。

常见问题与回答

1. SCrypt 与 BCrypt 有什么区别?

两者都是密码哈希函数。BCrypt 只需要 CPU 计算,SCrypt 同时需要大量内存,这使得 SCrypt 更难被专用硬件(ASIC)加速破解。但 SCrypt 参数配置更复杂。

2. 参数应该怎么设置?

推荐默认值:N=16384, r=8, p=1。这是 Litecoin 等加密货币使用的参数。对于更高安全性,可以增加 N 到 32768 或 65536。注意:N 翻倍会使计算时间约翻倍。

3. 为什么需要 Salt?

Salt 是随机字符串,用于防止彩虹表攻击。相同密码配合不同 Salt 会产生完全不同的哈希值。建议使用随机生成的 Salt(如 UUID)。

4. SCrypt 安全吗?

是的。SCrypt 是目前最安全的密码哈希算法之一,已被 IETF 标准化(RFC 7914)。它被广泛用于加密货币和密码管理系统。

5. 数据会上传到服务器吗?

不会。所有计算都在浏览器本地完成,确保密码安全。

6. 内存使用量如何计算?

大约为 128 * N * r 字节。例如 N=16384, r=8 时约使用 16MB 内存。

7. SCrypt 和 Argon2 哪个更好?

Argon2 是密码哈希竞赛冠军,在抗侧信道攻击方面更优。但 SCrypt 已久经考验,依然是很好的选择。两者都比 MD5/SHA 系列更适合密码存储。

8. 输出长度应该设多少?

用于密码存储时,32 字节(256 位)足够。如果用于密钥派生,可根据需要选择更长的输出。