PBKDF2 密钥派生

自定义盐、迭代与 PRF 派生密钥(hex/Base64 输出),在线校验 Django pbkdf2_sha256 哈希

派生密钥

PBKDF2 是兼容性最广的密钥派生函数(Web Crypto 原生支持),派生结果可用于加密密钥或口令哈希。

当前盐共 13 字节

OWASP 2023 对 PBKDF2-HMAC-SHA256 推荐 60 万次迭代(1-1000 万)。

默认 32 字节(256 位);常用 16 / 32 / 64 字节,上限 512。

输出格式

输入密码与盐后点击「派生密钥」

校验 Django 哈希

粘贴 Django / passlib 的 pbkdf2_sha256$迭代$Base64盐$Base64哈希 格式哈希并输入明文密码即可比对。

算法 pbkdf2_sha256 · 迭代 100 · 盐 16 字节 · 哈希 32 字节

待校验

纯浏览器端本地运算(Web Crypto 随机盐与派生,Worker 内执行),密码、盐与哈希不会上传到任何服务器。

常见问题

迭代次数选多少合适?
OWASP 2023 对 PBKDF2-HMAC-SHA256 推荐 60 万次(SHA-1 为 130 万、SHA-512 为 21 万,因为它们单次运算更便宜)。原则是单次派生控制在 100-500 毫秒;随硬件升级应逐步调高,Django 每个版本也会自动上调默认值。
Django 的密码哈希怎么核对?
从数据库 auth_user.password 字段复制形如 pbkdf2_sha256$600000$Base64盐$Base64哈希 的整串,粘贴到本工具校验区并输入明文密码即可比对。工具自动解析迭代次数、盐与哈希长度,passlib 的同款格式同样支持,盐的 Base64 有无 = 补位都能识别。
盐用文本还是十六进制?
两种模式最终都转成字节序列参与运算:文本按 UTF-8 编码(中英文字符均可),hex 按两位十六进制表示一字节(适合对接 WPA2、加密 ZIP 等已有十六进制盐的场景)。点「随机盐」会按当前模式生成 16 字节的密码学随机盐。
PBKDF2 和 Argon2 比怎么选?
新项目优先 Argon2id:PBKDF2 仅迭代抗暴破、无内存困难性,GPU 并行破解成本更低。PBKDF2 的优势是兼容性:Web Crypto 原生支持、Django/WPA2/加密 ZIP 等存量场景大量使用,核对迁移数据、跨语言复现派生结果时选它。
派生长度 dkLen 怎么定?
用作对称加密密钥时与算法匹配:AES-128 用 16 字节、AES-256 用 32 字节(本工具默认 32);用作口令哈希存储时至少 32 字节。理论上 PBKDF2 可派生任意长度,但超过底层哈希输出(如 SHA-256 的 32 字节)会触发多轮计算,无特殊需求不必加长。

相关工具