pbkdf2密钥长度

时间:2012-10-07 02:56:51

标签: hash pbkdf2

PBKDF2

中的$ key_length是多少?

它表示它将来自输入,但我看到人们使用的key_lengths为256或更高,但当我输入256作为key_length时,输出为512个字符。这是故意的吗?我可以安全地使用64作为key_length,因此输出长度为128个字符吗?

2 个答案:

答案 0 :(得分:3)

$ key_length是您希望从PBKDF2输出的输出字节数。 (注意,如果key_length大于散列算法的输出字节数,则该过程重复两次,这可能比你想要的慢得多。例如,SHA256给出32字节的输出,所以要求33字节将大概是要求32的两倍。)

您提到的长度加倍是因为代码将输出字节转换为十六进制(即每1字节2个字符),除非您指定$ raw_output = true。包含的测试向量指定$ raw_output = false,因为十六进制更容易使用和在线发布。根据您在应用程序中存储数据的方式,您可以决定是将结果存储为hex,base64还是仅存储原始二进制数据。

答案 1 :(得分:3)

Password-Based Cryptography Specification Version 2.0的IETF规范中,密钥长度定义为 “派生密钥的八位字节的预期长度,最多为正整数  (2 ^ 32 - 1)* hLen“这里hLen表示伪随机函数输出的八位字节长度。有关pbkdf2的更多详细信息,请参考How to store passwords securely with PBKDF2