PBKDF2 中的 $key_length 是多少
它说它将从输入中派生,但我看到人们使用 256 或更大的 key_lengths,但当我输入 256 作为 key_length 时,输出是 512 个字符。这是故意的吗?我可以安全地使用 64 作为 key_length 以便输出长度为 128 个字符吗?
最佳答案
$key_length 是您希望从 PBKDF2 输出的字节数。 (请注意,如果 key_length 大于散列算法的输出字节数,则该过程会重复两次,从而减慢散列速度,这可能会超出您的预期。例如,SHA256 给出 32 字节的输出,因此要求 33 字节将大约需要 32 个的两倍时间。)
您提到的长度加倍是因为代码将输出字节转换为十六进制(即每 1 个字节 2 个字符),除非您指定 $raw_output = true。包含的测试向量指定 $raw_output = false,因为十六进制更容易使用和在线发布。根据您在应用程序中存储数据的方式,您可以决定是将结果存储为十六进制、base64 还是仅存储原始二进制数据。
关于hash - pbkdf2 key 长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12765749/