Node.js crypto.pbkdf2Sync() 方法
crypto.pbkdf2Sync()方法提供了一个异步的基于密码的密钥派生函数2 ,即 (PBKDF2) 实现。此外,实现了由摘要定义的特定 HMAC 摘要算法,以从所述密码、盐和迭代中导出所需字节长度 (keylen) 的密钥。
句法:
crypto.pbkdf2Sync( password, salt, iterations, keylen, digest )
参数:此方法接受上面提到的五个参数,如下所述:
- 密码:它的类型为字符串、 Buffer 、 TypedArray 或 DataView 。
- salt:它必须尽可能独特。但是,建议盐是任意的,并且在任何情况下都至少有 16 个字节长。它的类型为字符串、 Buffer、 TypedArray 或 DataView 。
- 迭代次数:它必须是一个数字,并且应该设置得尽可能高。因此,迭代次数越多,派生密钥就越安全,但在这种情况下,完成所需的时间会更长。它是数字类型。
- keylen:需要字节长度的key,类型为number。
- 摘要:字符串类型的摘要算法。
返回类型:它将派生键作为缓冲区返回。
下面的示例说明了在 Node.js 中使用crypto.pbkdf2Sync() 方法:
示例 1:
// Node.js program to demonstrate the
// crypto.pbkdf2Sync() method
// Including crypto module
const crypto = require('crypto');
// Implementing pbkdf2Sync
const key = crypto.pbkdf2Sync('secret',
'salt', 2000, 64, 'sha512');
// Prints buffer
console.log(key);
输出:
示例 2:
// Node.js program to demonstrate the
// crypto.pbkdf2Sync() method
// Including crypto module
const crypto = require('crypto');
// Implementing pbkdf2Sync
const key = crypto.pbkdf2Sync('secret',
'salt', 100000, 100, 'sha512');
// Prints key which is encoded and converted
// to string
console.log(key.toString('hex'));
输出:
3745e482c6e0ade35da10139e797157f4a5da669dad7d5da88ef87e4
7471cc47ed941c7ad618e827304f083f8707f12b7cfdd5f489b782f10cc269
e3c08d59ae04919ee902c99dba309cde75569fbe8e6d5c341d6f2576f6618c
589e77911a261ee964e2
参考: https://nodejs.org/api/crypto.html#crypto_crypto_pbkdf2sync_password_salt_iterations_keylen_digest