PBKDF2 密钥派生
用 WebCrypto 的 PBKDF2 从密码与盐派生密钥,可选 SHA-1 / SHA-256 / SHA-512、自定义迭代次数与密钥长度,输出 hex / Base64 并给出安全建议。
浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。
所有计算都在浏览器本地用 WebCrypto 完成,密码与盐不会离开设备。
填写密码与盐后点击「派生密钥」
这个工具能做什么
- 从口令派生加密密钥:填好密码和盐,选好哈希算法、迭代次数与密钥长度,直接拿到 hex / Base64 两种形式的密钥字节,用于 AES 等对称加密。
- 对照后端实现:PBKDF2 是标准算法(RFC 8018),用同样的密码、盐、迭代次数、哈希和长度算一遍,就能确认服务端写的是不是同一套参数。
- 评估参数强度:工具会按 OWASP 2023 的建议给出提示,例如迭代次数低于 100000 会明确说「容易被暴力破解」,盐短于 16 字节也会提醒。
- 临时生成随机的盐:点「随机生成」按指定字节数取加密随机盐,配合 hex 或 Base64 编码格式使用。
示例
输入
密码:password 盐:salt(UTF-8 文本) 哈希算法:SHA-256 迭代次数:1000 密钥长度:16 字节
输出
Hex:632c2812e46d4604102ba7618e9d6d7d Base64:YywoEuRtRgQQK6dhjp1tfQ== 安全建议:参数偏弱——迭代次数太低、盐太短
「salt」按 UTF-8 编码正好 4 字节,也是允许的最小盐长。1000 是工具允许的最低迭代次数,实际用于生产请按提示提到 600000 以上。
常见问题
PBKDF2 和直接 SHA-256 密码有什么区别?
直接哈希太快,GPU 每秒能试几十亿次;PBKDF2 通过大量迭代故意把每次尝试变慢,再加上随机的盐让预计算彩虹表失效。所以同样的密码,PBKDF2 的哈希值无法和 SHA-256 的结果互换,必须用同样的迭代次数和盐才能复现。
迭代次数该填多少?
工具允许 1000 起,但只是工程下限。OWASP 2023 建议 PBKDF2-HMAC-SHA256 至少 600000 次,SHA-512 可以用低一些。数字越大越安全也越慢,页面会显示每次派生的实际耗时,方便你权衡。
盐为什么必须每个密码都不同?
盐的作用是让相同密码产生不同哈希,避免两个用户同密码时哈希一样、也避免攻击者用预计算表批量破解。建议至少 16 字节并随机生成,绝不要用固定的常量盐。
密钥长度填多少合适?
按用途定:AES-128 用 16 字节、AES-192 用 24 字节、AES-256 用 32 字节。工具允许 1–1024 字节,但只要满足算法要求即可,超长并不会额外增强口令本身的强度(口令熵才是上限)。
密码和盐会被上传吗?
不会。派生用浏览器内置的 WebCrypto(crypto.subtle.deriveBits)完成,计算全在本机,页面没有网络请求,密码和盐不会离开设备。
关键词:pbkdf2密钥派生key derivationkdf密码哈希salt盐webcrypto迭代次数sha256