Node.js 中的 crypto.pbkdf2() 方法

crypto.pbkdf2(),也称为基于密码的密钥派生函数,提供了派生函数的异步实现。密钥是通过使用指定算法的 Hmac 摘要从密码、salt 和迭代中得出的

语法

crypto.createHmac(algorithm, key, [options])

参数

上述参数描述如下 -

  • 密码 - 为获取请求字节长度的密钥而定义的密码。可能的值是字符串、DataView、Buffer 等类型。

  • salt  – 类似于获取密钥的密码。可能的值是字符串、DataView、Buffer 等类型。

  • 迭代 - 获取所需字节长度的所需密钥。它接受该值作为数字。

  • keylen  – 这是请求的密钥字节长度。它是类型号。

  • 摘要 – Hmac 算法由该摘要值指定。默认值为“sha1”

  • callback  - 如果在异步模式下发生任何错误,将在回调中处理

示例

创建一个具有名称的文件 -pbkdf2.js并复制以下代码片段。创建文件后,使用以下命令运行此代码,如下例所示 -

node pbkdf2.js

pbkdf2.js

// crypto.pbkdf2() 演示示例

// 导入加密模块
const crypto = require('crypto');

// 使用以下选项定义 pbkdf2
crypto.pbkdf2('secret', 'salt', 100000, 64, 'sha512', (err, derivedKey) => {
   if (err) throw err;
   // 打印派生密钥
   console.log("密钥派生: ",derivedKey.toString('hex'));
});
输出结果
C:\home\node>> node pbkdf2.js
密钥派生:
3745e482c6e0ade35da10139e797157f4a5da669dad7d5da88ef87e47471cc47ed941c7ad618e8
27304f083f8707f12b7cfdd5f489b782f10cc269e3c08d59ae

示例

让我们再看一个例子。

// crypto.pbkdf2() 演示示例

// 导入加密模块
const crypto = require('crypto');

// 使用以下选项定义 pbkdf2
crypto.pbkdf2('secret', 'salt', 100, 64, 'sha1', (err, derivedKey) => {
   if (err) throw err;
   // 打印派生密钥
   console.log("密钥派生: ",derivedKey);
   console.log("以十六进制派生的密钥: ",derivedKey.toString('hex'));
   console.log("在 base64 中派生的密钥: ",derivedKey.toString('base64'));
});
输出结果
C:\home\node>> node pbkdf2.js
密钥派生: <Buffer b7 36 35 f7 c0 88 2e 1f c3 ba 6e 29 b1 4a f1 27 4d f8 48 28 b4 d1 8f cc 22 2e b5 74 45 5f 50 5d 3d 23 19 13 2d 84 e1 91 a7 83 e2 00 73 4e 37 4a 24 b6 ... >
以十六进制派生的密钥:
b73635f7c0882e1fc3ba6e29b14af1274df84828b4d18fcc222eb574455f505d3d2319132d84e1
91a783e200734e374a24b62cfab65dfb5e9dc28ae147072419
在 base64 中派生的密钥:
tzY198CILh/Dum4psUrxJ034SCi00Y/MIi61dEVfUF09IxkTLYThkaeD4gBzTjdKJLYs+rZd+16dwo
rhRwckGQ==