PBKDF2 密钥派生 使用指南
口令 + salt(16字节)+ 迭代 100000 + SHA256 → 固定长度密钥;迭代越多越抗暴力。…
核心功能
- 从口令派生定长密钥,支持 SHA-1 / SHA-256 / SHA-384 / SHA-512
- 可指定盐值、迭代次数与输出长度,参数影响抗爆破强度
- 输出可选十六进制、Base64 或二进制字符串
- 用于复算与验证新旧实现的派生结果是否一致
适用场景
- 从口令派生加密密钥,带盐与迭代次数。
- 给已有系统做口令哈希迁移:按约定的盐、迭代次数与输出长度复算,确认与新实现结果一致后再切换。
使用步骤
- 输入要派生的口令(不要填明文密码以外的敏感信息)
- 填盐值:每个用户应各不相同,且长度不低于 16 字节
- 设迭代次数:口令哈希场景建议不低于 600000 次(OWASP 量级),密钥派生可低一些但别低于 10000
- 选择输出长度(字节)与输出格式
- 迁移旧系统时,用旧参数复算一遍并与库里的值比对,一致再切换新参数
实用技巧
- 同时每个口令必须用独立随机盐,并把算法参数与密文一起存储以便将来升级
- 给已有系统做口令哈希迁移:按约定的盐、迭代次数与输出长度复算,确认与新实现结果一致后再切换。
常见问题
- PBKDF2 与 bcrypt 怎么选?
- 存储口令二者皆可,PBKDF2 更通用,bcrypt 实现更简单安全。
- 迭代次数设多少合适?
- 原则是「在可接受延迟内取最大值」:常取使单次计算耗时约 100–250 毫秒的数值,随硬件提升逐年上调。OWASP 给出的参考量级是 PBKDF2-HMAC-SHA256 不少于 60 万次(会随时间调整)。同时每个口令必须用独立随机盐,并把算法参数与密文一起存储以便将来升级。