我现在正在尝试使用PBKDF2来获取我的密码,而且我明白如果我将来升级到更快的机器,我会想要增加PBKDF2迭代次数。但是,这会使我存储的所有当前密码无效。我所见过的一个想法是将PBKDF2设置与密码(类似于存储盐的方式)存储在一起,例如迭代计数和使用的PRF(SHA-256,SHA-512)。哈希创建。在向后兼容性方面听起来是个好主意,但我想知道这样做是否有任何缺点。任何有关这方面的见解将不胜感激。
答案 0 :(得分:4)
你在这里肯定是正确的方向。许多系统只存储盐,但执行PBKDF2所需的其余参数在哪里?硬编码!加密函数的硬编码参数几乎不是一个好主意。
我看到的唯一缺点是,当您存储所有参数时,您的数据库可能会占用更多空间,但您未来的升级将更容易和直接。
BTW RFC 2898定义了名为PBKDF2-params
的结构,它被设计为PBKDF2算法的所有公共参数的数据持有者。至少使用它作为灵感,所以你不会忘记任何重要的参数。