Hash pbkdf2密钥长度

Hash pbkdf2密钥长度,hash,pbkdf2,Hash,Pbkdf2,$key_的长度是多少 它说它将从输入中派生,但我看到人们使用256或更大的密钥长度,但当我输入256作为密钥长度时,输出是512个字符。这是故意的吗?我是否可以安全地使用64作为密钥长度,以便输出长度为128个字符?$key\u length是您希望从PBKDF2输出的字节数。(请注意,如果key_length大于散列算法的输出字节数,则该过程将重复两次,使散列的速度可能比您希望的要慢。例如,SHA256提供32字节的输出,因此请求33字节的时间大约是请求32字节的两倍。) 您提到的长度加倍是

$key_的长度是多少


它说它将从输入中派生,但我看到人们使用256或更大的密钥长度,但当我输入256作为密钥长度时,输出是512个字符。这是故意的吗?我是否可以安全地使用64作为密钥长度,以便输出长度为128个字符?

$key\u length是您希望从PBKDF2输出的字节数。(请注意,如果key_length大于散列算法的输出字节数,则该过程将重复两次,使散列的速度可能比您希望的要慢。例如,SHA256提供32字节的输出,因此请求33字节的时间大约是请求32字节的两倍。)


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

在IETF规范中,密钥长度定义为 派生密钥的预期长度(以八位字节为单位),最多为正整数 (2^32-1)*hLen“此处,hLen表示伪随机函数输出的长度(以八位字节为单位)。有关pbkdf2的更多详细信息,请参阅