【发布时间】:2013-01-01 22:05:03
【问题描述】:
如果 Node 的 crypto.PBKDF2 使用 HMAC SHA-1,那么密钥长度怎么可能超过 20 个字节?
这是我的理解(显然是错误的):crypto.PBKDF2(password, salt, iterations, keylen, callback) 使用 HMAC SHA-1 用盐对密码进行哈希处理。然后它使用该哈希值并用相同的盐对 it 进行哈希处理。无论您告诉它多少次迭代,它都会重复,然后将结果传回给您。结果将被截断为您在keylen 中指定的字节数。
SHA-1 outputs 160 bits,或 20 个字节。但是,我可以从crypto.PBKDF2 要求keylen 超过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 个字节之后看到某种模式,但我没有。
【问题讨论】:
标签: cryptography sha1 hmac pbkdf2