我的功能如下:
pbkdf2($raw_pw,$salt,1000,128)
1000是通过次数,128是密钥大小。该函数返回一个二进制密钥,我使用base64将其存储在数据库中。
我的问题是:使用sha512的pbkdf2的推荐密钥大小和盐大小是什么?
32的密钥大小和128的密钥大小一样安全吗?
答案 0 :(得分:4)
1000是迭代次数,而不是次数。 128最后是长度。
根据维基百科http://en.wikipedia.org/wiki/PBKDF2和我自己对密码学的一点知识,你应该使用超过128字节(或者你要求的32字节)。生成的键的大小等于哈希冲突的机会。使用256(如WPA2那样)或512应该不是问题,也不是你的CPU /内存/无论什么问题。
与pbkdf2的其他集成相比,1000也是非常少量的迭代。您可以轻松使用5000或10000(如iOS4),这可能会导致处理时间增加10毫秒,但会使关键更强大(请参阅:可能的攻击者也可以运行10k迭代。这可能会改变他需要的时间1天到10天,或1个月到近1年)。