我使用带有 SHA-256 的 PBKDF2 来存储密码的哈希值。我使用以下参数:
number of iterations desired = 1024
length of the salt in bytes = 16
length of the derived key in bytes = 4096
但最近我发现很可能是参数选择不当。
例如wiki页面说:
标准是在 2000 年编写的,建议的最小迭代次数是 1000 .... 截至 2005 年,Kerberos 标准推荐 4096 次迭代
这意味着很可能我必须增加这个数字
和
该标准建议盐长度至少为 64 位
这意味着我的盐长度还可以太低(感谢 Neil Smithline)。但是在搜索标准时,我找不到关于推荐盐长度的提及。
当我查找派生密钥的长度并找到这个不错的答案时:
如果您使用 PBKDF2 进行密码散列,那么 12 字节的输出应该没问题,并且具有不可忽略的安全余量
它表明我拿了太大的数字,这可能没有意义。
所以我的问题是:任何人都可以为这种密码散列方案(截至 2016 年)显示好的参数(可能有一些理由/链接)。我还可以保证派生的密钥长度始终与我要求的长度相同吗?