Skip to content

Commit 98c6e4b

Browse files
tniessenMoLow
authored andcommittedJul 6, 2023
doc: use secure key length for HMAC generateKey
The examples for generateKey() and generateKeySync() generate 64-bit HMAC keys. That is inadequate for virtually any HMAC instance. As per common NIST recommendations, the minimum should be roughly 112 bits, or more commonly 128 bits. Due to the design of HMAC itself, it is not unreasonable to choose the underlying hash function's block size as the key length. For many popular hash functions (SHA-256, SHA-224, SHA-1, MD5, ...) this happens to be 64 bytes (bytes, not bits!). This is consistent with the HMAC implementation in .NET, for example, even though it provides virtually no benefit over a 256-bit key. PR-URL: #48052 Reviewed-By: Filip Skokan <panva.ip@gmail.com> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
1 parent 8090d29 commit 98c6e4b

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed
 

‎doc/api/crypto.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -3665,7 +3665,7 @@ const {
36653665
generateKey,
36663666
} = await import('node:crypto');
36673667

3668-
generateKey('hmac', { length: 64 }, (err, key) => {
3668+
generateKey('hmac', { length: 512 }, (err, key) => {
36693669
if (err) throw err;
36703670
console.log(key.export().toString('hex')); // 46e..........620
36713671
});
@@ -3676,7 +3676,7 @@ const {
36763676
generateKey,
36773677
} = require('node:crypto');
36783678

3679-
generateKey('hmac', { length: 64 }, (err, key) => {
3679+
generateKey('hmac', { length: 512 }, (err, key) => {
36803680
if (err) throw err;
36813681
console.log(key.export().toString('hex')); // 46e..........620
36823682
});
@@ -3939,7 +3939,7 @@ const {
39393939
generateKeySync,
39403940
} = await import('node:crypto');
39413941

3942-
const key = generateKeySync('hmac', { length: 64 });
3942+
const key = generateKeySync('hmac', { length: 512 });
39433943
console.log(key.export().toString('hex')); // e89..........41e
39443944
```
39453945

@@ -3948,7 +3948,7 @@ const {
39483948
generateKeySync,
39493949
} = require('node:crypto');
39503950

3951-
const key = generateKeySync('hmac', { length: 64 });
3951+
const key = generateKeySync('hmac', { length: 512 });
39523952
console.log(key.export().toString('hex')); // e89..........41e
39533953
```
39543954

0 commit comments

Comments
 (0)
Please sign in to comment.