2012-10-07 185 views
1

什么是PBKDF2PBKDF2密钥长度

的$ key_length它说,它将从输入中得到,但我看到使用的256和更大的key_lengths的人,但是当我输入256作为key_length输出512个字符。这是故意的吗?我可以安全地使用64作为key_length,因此输出长度为128个字符?

回答

3

$ key_length是您希望从PBKDF2获得的输出字节数。 (请注意,如果key_length大于散列算法的输出字节数,则会重复该过程两次,这样散列速度可能会超出您的期望值,例如,SHA256会提供32个字节的输出,因此要求输入33个字节大约需要32倍的长度。)

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