如果 Nodecrypto.PBKDF2
使用 HMAC SHA-1,密钥长度怎么可能超过 20 个字节?
这是我的理解(显然不正确):crypto.PBKDF2(password, salt, iterations, keylen, callback)
使用 HMAC SHA-1 用盐对密码进行哈希处理。然后它采用该散列并用相同的盐对其进行散列。无论您告诉它多少次迭代,它都会重复,然后将结果传回给您。结果被截断为您在 中指定的字节数keylen
。
SHA-1 输出 160 位或 20 字节。但是,我可以从 请求keylen
超过 20 个字节crypto.PBKDF2
,并且超过第 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 个字节之后看到某种模式,但我没有。