Nodecrypto.PBKDF2
が HMAC SHA-1 を使用している場合、キーの長さが 20 バイトを超えることはあり得ますか?
これが私が理解していることです(明らかに間違っています):crypto.PBKDF2(password, salt, iterations, keylen, callback)
HMAC SHA-1を使用して、ソルトでパスワードをハッシュします。次に、そのハッシュを取得し、同じソルトでハッシュします。何回繰り返してもそれを繰り返し、結果を返します。結果は、で指定したバイト数に切り捨てられますkeylen
。
SHA-1 は 160 ビットまたは 20 バイトを出力します。しかし、 から 20 バイト以上を要求できkeylen
、20 バイトを超えるcrypto.PBKDF2
とデータが繰り返されません。それは私には意味がありません。
ここで私は何を誤解していますか?
やってみて:
c.pbkdf2('password', 'salt', 1, 21, function(err, key) {
for (var i = 0; i < key.length; i++) {
console.log(key[i].toString(36));
}
});
20 番目のバイトの後に何らかのパターンが見られると思いますが、そうではありません。