3

我的功能如下:

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

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

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

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

4

1 回答 1

6

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

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

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

于 2012-06-08T08:02:25.440 回答