我现在正在尝试使用PBKDF2来输入密码,这让我意识到,如果将来要升级到更快的计算机,我希望增加PBKDF2的迭代次数。但是,这会使我已存储的所有当前密码无效。我见过的一个想法是将PBKDF2设置与密码(类似于存储盐的方式)一起存储,例如在创建哈希时使用的迭代计数和PRF(SHA-256,SHA-512) 。从向后兼容性的角度看,这似乎是一个好主意,但我想知道这样做是否有任何弊端。任何对此的见解将不胜感激。
最佳答案
您肯定在这里朝着正确的方向前进。许多系统仅存储盐,但是执行PBKDF2所需的其余参数在哪里?硬编码!加密功能的硬编码参数几乎从来都不是一个好主意。
我看到的唯一缺点是,当您存储所有参数时,数据库可能会占用更多空间,但是将来的升级将变得更加容易和直接。
BTW RFC 2898定义了称为PBKDF2-params
的结构,该结构被设计为PBKDF2算法的所有公共参数的数据持有人。至少将其用作灵感,这样您就不会忘记任何重要的参数。