PBKDF2中的$key_length是什么
它说它将从输入派生,但是我看到人们使用256或更大的key_lengths,但是当我输入256作为key_length时,输出是512个字符。这是故意的吗?我是否可以安全地使用64作为key_length,以便输出长度为128个字符?
发布于 2012-10-25 21:51:40
$key_length是您希望从PBKDF2输出的字节数。(请注意,如果key_length大于散列算法的输出字节数,该过程将重复两次,从而减慢散列的速度,这可能超出您的预期。例如,SHA256提供32字节的输出,因此请求33字节的时间大约是请求32字节的时间的两倍。)
您提到的长度加倍是因为代码将输出字节转换为十六进制(即每1字节2个字符),除非您指定$raw_output = true。包含的测试向量指定$raw_output = false,因为十六进制更容易处理和在线发布。根据您在应用程序中存储数据的方式,您可以决定是将结果存储为十六进制、base64,还是只存储原始二进制数据。
发布于 2017-09-25 20:56:26
在Password-Based Cryptography Specification Version 2.0的IETF规范中,密钥长度被定义为“以导出密钥的八位字节为单位的预期长度,一个正整数,至多(2^32 - 1) * hLen”,其中hLen表示伪随机函数输出的以八位字节为单位的长度。有关pbkdf2的更多详细信息,请访问How to store passwords securely with PBKDF2
https://stackoverflow.com/questions/12765749
复制相似问题