【问题标题】:PBKDF2 recommended key size?PBKDF2 推荐的密钥大小?
【发布时间】:2012-06-12 05:12:57
【问题描述】:

我的功能如下:

pbkdf2($raw_pw,$salt,1000,128)

1000 是传递次数,128 是密钥大小。该函数返回一个二进制密钥,我使用 base64 将其存储在数据库中。

我的问题是:使用 sha512 的 pbkdf2 的推荐密钥大小和盐大小是多少?

密钥大小为 32 是否与密钥大小为 128 一样安全?

【问题讨论】:

  • 哎呀。为什么要将派生密钥存储在数据库中?一般来说,这是个坏主意。

标签: php mysql security sha pbkdf2


【解决方案1】:

1000 是迭代次数,而不是通过次数。 128是最后的长度。

根据Wikipedia(以及我自己对密码学的一点了解),您应该使用超过 128 位(或您要求的 32 位)。结果密钥的大小等于哈希冲突的机会。使用 256(如 WPA2 一样)或 512 应该不是问题,对于您的 CPU/内存/其他任何东西也不是问题。

与 pbkdf2 的其他集成相比,1000 也是非常少量的迭代。您可以轻松使用 5000 或 10000(如 iOS4),这可能会导致处理时间增加 10 毫秒,但会产生更强大的密钥(请参阅:可能的攻击者还必须运行 10k 次迭代。这可能会改变他需要的时间1 天到 10 天,或 1 个月到将近 1 年)。

【讨论】:

  • 我缺少的迭代和传递之间是否存在细微差别?我会交替使用它们。
猜你喜欢
  • 1970-01-01
  • 2011-12-25
  • 1970-01-01
  • 2014-11-27
  • 1970-01-01
  • 2013-06-27
  • 1970-01-01
  • 2015-10-06
  • 2015-11-12
相关资源
最近更新 更多