hash - pbkdf2 key 长度

标签 hash pbkdf2

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/

相关文章:

javascript - IndexedDB 数据库身份验证 - 安全选项 - 加密/散列 JavaScript HTML5

perl - 如何从 Perl 中的散列数组创建散列散列?

c# - 如何使用 HttpWebRequest 进行摘要式身份验证?

php - 为什么 Php pbkdf2 输出与 golang 不同?

passwords - 密码散列 : PBKDF2 (using sha512 x 1000) vs Bcrypt

php - 使用php : Password hash doesn't match批量创建seafile用户(cloudstorage)

hash - yii CPasswordHelper : hashPassword and verifyPassword

javascript - url 中没有哈希值的回家路线...backbone.js?

java - 将 PBKDF2 盐重新用于 AES/GCM 作为 IV : dangerous?

passwords - Python wpa_passphrase (linux binary) 实现仅生成部分 psk