passwords - 与密码一起存储 PBKDF2 设置

标签 passwords cryptography password-protection pbkdf2 sha2

我现在正在尝试使用 PBKDF2 作为我的密码,我突然意识到,如果我将来升级到更快的机器,我会想要增加 PBKDF2 迭代的次数。但是,这会使我存储的所有当前密码无效。我看到的一个想法是将 PBKDF2 设置与密码(类似于存储 salt 的方式)一起存储,例如在哈希创建时使用的迭代计数和 PRF(SHA-256、SHA-512) .就向后兼容性而言,这听起来是个好主意,但我想知道这样做是否有任何缺点。对此的任何见解将不胜感激。

最佳答案

你肯定在这里采取了正确的方向。许多系统只存储盐,但执行 PBKDF2 所需的其余参数在哪里?硬编码!加密函数的硬编码参数几乎从来都不是一个好主意。

我看到的唯一缺点是,当您存储所有参数时,您的数据库可能会占用更多空间,但您 future 的升级将更加容易和直接。

顺便说一句RFC 2898定义名为 PBKDF2-params 的结构它被设计为 PBKDF2 算法的所有公共(public)参数的数据持有者。至少将其用作灵感,这样您就不会忘记任何重要参数。

关于passwords - 与密码一起存储 PBKDF2 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25395651/

相关文章:

PHP-将密码与root密码进行比较

php - 如何防止更新表单上密码字段的双重 md5?

java - 通过 spring security 将密码传递给 dao 对象

passwords - 使用 SafeNet eToken 自动进行扩展验证 (EV) 代码签名

python - 安装 Charm-Crypto for Python3 时出现问题

java - Zip4J -> java.security.ProviderException : Could not construct MacSpi instance

java - 字符串到字节到 Big Int 转换 VICE VERSA 错误

php - 在 MYSQL 中存储密码的正确代码过程

c# - 无需打开即可检查 Word 文档是否受密码保护

php - CodeIgniter 中的密码散列和验证