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 密钥派生:以十六进制派生的密钥: b73635f7c0882e1fc3ba6e29b14af1274df84828b4d18fcc222eb574455f505d3d2319132d84e1 91a783e200734e374a24b62cfab65dfb5e9dc28ae147072419 在base64中派生的密钥: tzY198CILh/Dum4psUrxJ034SCi00Y/MIi61dEVfUF09IxkTLYThkaeD4gBzTjdKJLYs+rZd+16dwo rhRwckGQ==