我现在正在尝试使用 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/