gpt4 book ai didi

cryptography - 使用 HMAC SHA-1 的 PBKDF2 如何返回超过 20 个字节?

转载 作者:行者123 更新时间:2023-12-04 04:10:43 28 4
gpt4 key购买 nike

如果节点的 crypto.PBKDF2使用 HMAC SHA-1, key 长度怎么会超过 20 个字节?

这是我的理解(显然不正确):crypto.PBKDF2(password, salt, iterations, keylen, callback)使用 HMAC SHA-1 用盐散列密码。然后它使用该散列并使用相同的盐对其进行散列。无论你告诉它多少次迭代,它都会重复这一点,然后将结果传回给你。结果被截断为您在 keylen 中指定的字节数.

SHA-1 outputs 160 bits , 或 20 个字节。但是,我可以要求keylen来自 crypto.PBKDF2 的超过 20 个字节, 超过第 20 个字节后,数据不再重复。这对我来说没有意义。

我在这里误解了什么?

试试看:

c.pbkdf2('password', 'salt', 1, 21, function(err, key) {
for (var i = 0; i < key.length; i++) {
console.log(key[i].toString(36));
}
});

我希望在第 20 个字节之后看到某种模式,但我没有。

最佳答案

导出 i第一个块,PBKDF2 运行完整的 key 派生,具有 i连接到盐。因此,为了获得您的第 21 个字节,它只需使用不同的有效盐再次运行推导,从而产生完全不同的输出。这意味着派生 21 个字节的成本是派生 20 个字节的两倍。

我建议不要使用 PBKDF2 来导出超过基础哈希的自然输出大小/大小。通常这只会减慢防守者的速度,而不是攻击者的速度。

我宁愿跑 PBKDF2一次派生出一个主 key ,然后使用 HKDF 从中派生出多个 secret 。见 How to salt PBKDF2, when generating both an AES key and a HMAC key for Encrypt then MAC? on crypto.SE

关于cryptography - 使用 HMAC SHA-1 的 PBKDF2 如何返回超过 20 个字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14394803/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com