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


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

语法

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

参数

以上参数描述如下:

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

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

  • iterations – 获取请求字节长度的所需密钥。它接受数值作为值。

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

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

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

示例

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

node pbkdf2.js

pbkdf2.js

 在线演示

// crypto.pbkdf2() demo example

// Importing the crypto module
const crypto = require('crypto');

// Defining the pbkdf2 with the following options
crypto.pbkdf2('secret', 'salt', 100000, 64, 'sha512', (err, derivedKey) => {
   if (err) throw err;
   // Printing the derived key
   console.log("Key Derived: ",derivedKey.toString('hex'));
});

输出

C:\home
ode>> node pbkdf2.js Key Derived: 3745e482c6e0ade35da10139e797157f4a5da669dad7d5da88ef87e47471cc47ed941c7ad618e8 27304f083f8707f12b7cfdd5f489b782f10cc269e3c08d59ae

示例

让我们再看一个例子。

 在线演示

// crypto.pbkdf2() demo example

// Importing the crypto module
const crypto = require('crypto');

// Defining the pbkdf2 with the following options
crypto.pbkdf2('secret', 'salt', 100, 64, 'sha1', (err, derivedKey) => {
   if (err) throw err;
   // Printing the derived key
   console.log("Key Derived: ",derivedKey);
   console.log("Key Derived in hex: ",derivedKey.toString('hex'));
   console.log("Key Derived in base64: ",derivedKey.toString('base64'));
});

输出

C:\home
ode>> node pbkdf2.js Key Derived: <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 ... > Key Derived in hex: b73635f7c0882e1fc3ba6e29b14af1274df84828b4d18fcc222eb574455f505d3d2319132d84e1 91a783e200734e374a24b62cfab65dfb5e9dc28ae147072419 Key Derived in base64: tzY198CILh/Dum4psUrxJ034SCi00Y/MIi61dEVfUF09IxkTLYThkaeD4gBzTjdKJLYs+rZd+16dwo rhRwckGQ==

更新于: 2021年5月20日

1K+ 浏览量

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告