Skip to content

Commit 85ac915

Browse files
authored
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 <[email protected]> Reviewed-By: Luigi Pinca <[email protected]>
1 parent 9772065 commit 85ac915

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

doc/api/crypto.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3648,7 +3648,7 @@ const {
36483648
generateKey,
36493649
} = await import('node:crypto');
36503650

3651-
generateKey('hmac', { length: 64 }, (err, key) => {
3651+
generateKey('hmac', { length: 512 }, (err, key) => {
36523652
if (err) throw err;
36533653
console.log(key.export().toString('hex')); // 46e..........620
36543654
});
@@ -3659,7 +3659,7 @@ const {
36593659
generateKey,
36603660
} = require('node:crypto');
36613661

3662-
generateKey('hmac', { length: 64 }, (err, key) => {
3662+
generateKey('hmac', { length: 512 }, (err, key) => {
36633663
if (err) throw err;
36643664
console.log(key.export().toString('hex')); // 46e..........620
36653665
});
@@ -3922,7 +3922,7 @@ const {
39223922
generateKeySync,
39233923
} = await import('node:crypto');
39243924

3925-
const key = generateKeySync('hmac', { length: 64 });
3925+
const key = generateKeySync('hmac', { length: 512 });
39263926
console.log(key.export().toString('hex')); // e89..........41e
39273927
```
39283928

@@ -3931,7 +3931,7 @@ const {
39313931
generateKeySync,
39323932
} = require('node:crypto');
39333933

3934-
const key = generateKeySync('hmac', { length: 64 });
3934+
const key = generateKeySync('hmac', { length: 512 });
39353935
console.log(key.export().toString('hex')); // e89..........41e
39363936
```
39373937

0 commit comments

Comments
 (0)