▲ DevKit
隐私
🗝️

密钥派生

PBKDF2 与 EvpKDF 密钥派生,支持 Web Crypto 原生加速、OWASP 迭代建议与额外派生 IV

算法
口令 P
盐 S (现代建议 ≥ 16 字节随机) · 当前 0 字节 (空盐)
迭代次数 c
输出长度 dkLen
字节 = 256 bit
派生结果
派生密钥 DK—

填入口令或盐后自动派生。默认 600,000 轮 + Web Crypto 原生路径,通常在几百毫秒内完成。

等价 OpenSSL 命令
openssl enc -aes-256-cbc -k '' -md sha256 -pbkdf2 -iter 600000

口令已内联进命令,复制到终端或脚本时请留意 shell 历史记录。

标准向量:
PBKDF2 与 EvpKDF 怎么选
维度PBKDF2EvpKDF
标准RFC 8018 / PKCS#5 v2.2OpenSSL 私有实现
PRFHMAC-SHA1/224/256/384/512朴素哈希链 MD5 / SHA1 / SHA256
默认迭代1(必须手动提高)1
输出单一 DKKey + IV(OpenSSL 约定)
抗 GPU中(无内存硬,ASIC 仍高效)极低
现状🟢 推荐(配合高迭代)🟠 遗留兼容
  • PBKDF2(RFC 8018 / PKCS#5 v2.2)用 HMAC 做迭代,是目前仍然被推荐使用的口令派生算法;关键是**迭代次数要足够高**。
  • OWASP 2023 建议的最低轮数:HMAC-SHA-256 ≥ 600,000、HMAC-SHA-512 ≥ 210,000、HMAC-SHA-1 ≥ 1,300,000。迭代次数应在"用户可接受延迟"内取最大值。
  • EvpKDF 就是 OpenSSL 的 EVP_BytesToKey:D1 = H(P‖S),Di = H(D(i-1)‖P‖S)。注意这是**朴素哈希链、不是 HMAC**,且默认只迭代 1 次,对 GPU/ASIC 暴力破解几乎无防护。它存在的唯一理由是兼容 openssl enc / PHP / 老 Java。
  • 盐必须随机且足够长(现代建议 ≥ 16 字节,OpenSSL 传统用 8 字节)。空盐会让相同口令派生出相同密钥,彩虹表可直接命中。
  • 「额外派生 16 字节 IV」遵循 OpenSSL 约定:把派生材料按 Key 在前、IV 在后切分。这正是 openssl enc 口令模式的做法。
  • Web Crypto 原生路径(SHA-1/256/384/512)比软件实现快 10–50 倍;SHA-224 与 EvpKDF 不被原生支持,会自动回退并在状态栏说明。两条路径的结果已在单测中交叉验证一致。
  • 🔑 口令与盐不会写入 localStorage、不进分享链接、不进 URL。本工具的历史记录默认关闭。
使用说明 / 算法说明
  • PBKDF2(RFC 8018 / PKCS#5 v2.2)用 HMAC 做迭代,是目前仍然被推荐使用的口令派生算法;关键是**迭代次数要足够高**。
  • OWASP 2023 建议的最低轮数:HMAC-SHA-256 ≥ 600,000、HMAC-SHA-512 ≥ 210,000、HMAC-SHA-1 ≥ 1,300,000。迭代次数应在"用户可接受延迟"内取最大值。
  • EvpKDF 就是 OpenSSL 的 EVP_BytesToKey:D1 = H(P‖S),Di = H(D(i-1)‖P‖S)。注意这是**朴素哈希链、不是 HMAC**,且默认只迭代 1 次,对 GPU/ASIC 暴力破解几乎无防护。它存在的唯一理由是兼容 openssl enc / PHP / 老 Java。
  • 盐必须随机且足够长(现代建议 ≥ 16 字节,OpenSSL 传统用 8 字节)。空盐会让相同口令派生出相同密钥,彩虹表可直接命中。
  • 「额外派生 16 字节 IV」遵循 OpenSSL 约定:把派生材料按 Key 在前、IV 在后切分。这正是 openssl enc 口令模式的做法。
  • Web Crypto 原生路径(SHA-1/256/384/512)比软件实现快 10–50 倍;SHA-224 与 EvpKDF 不被原生支持,会自动回退并在状态栏说明。两条路径的结果已在单测中交叉验证一致。
  • 🔑 口令与盐不会写入 localStorage、不进分享链接、不进 URL。本工具的历史记录默认关闭。