跳到主内容
UniKit

PBKDF2 密钥派生

用 WebCrypto 的 PBKDF2 从密码与盐派生密钥,可选 SHA-1 / SHA-256 / SHA-512、自定义迭代次数与密钥长度,输出 hex / Base64 并给出安全建议。

浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。

密码 / 口令

所有计算都在浏览器本地用 WebCrypto 完成,密码与盐不会离开设备。

派生结果
Hex
Base64

填写密码与盐后点击「派生密钥」

这个工具能做什么

  • 从口令派生加密密钥:填好密码和盐,选好哈希算法、迭代次数与密钥长度,直接拿到 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

同类工具