当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js crypto.pbkdf2Sync(password, salt, iterations, keylen, digest)用法及代码示例


crypto.pbkdf2Sync(password, salt, iterations, keylen, digest)

历史
版本变化
v14.0.0

iterations 参数现在限制为正值。早期版本将其他值视为一个值。

v6.0.0

现在不推荐在不传递 digest 参数的情况下调用此函数,并将发出警告。

v6.0.0

password 的默认编码(如果它是从 binary 更改为 utf8 的字符串)。

v0.9.3

添加于:v0.9.3


参数

提供同步的基于密码的 key 派生函数 2 (PBKDF2) 实现。应用由digest 指定的选定HMAC 摘要算法以从passwordsaltiterations 导出请求字节长度(keylen) 的 key 。

如果发生错误,将抛出 Error ,否则将返回派生 key 作为 Buffer

如果 digestnull ,将使用 'sha1'。此行为已弃用,请明确指定 digest

iterations 参数必须设置为尽可能高的数字。迭代次数越多,派生 key 就越安全,但需要更长的时间才能完成。

salt 应尽可能独特。建议盐是随机的并且至少 16 字节长。有关详细信息,请参阅NIST SP 800-132

在传递 passwordsalt 的字符串时,请考虑 caveats when using strings as inputs to cryptographic APIs

const {
  pbkdf2Sync
} = await import('node:crypto');

const key = pbkdf2Sync('secret', 'salt', 100000, 64, 'sha512');
console.log(key.toString('hex'));  // '3745e48...08d59ae'const {
  pbkdf2Sync,
} = require('node:crypto');

const key = pbkdf2Sync('secret', 'salt', 100000, 64, 'sha512');
console.log(key.toString('hex'));  // '3745e48...08d59ae'

crypto.DEFAULT_ENCODING 属性可用于更改返回derivedKey 的方式。但是,此属性已被弃用,应避免使用。

import crypto from 'node:crypto';
crypto.DEFAULT_ENCODING = 'hex';
const key = crypto.pbkdf2Sync('secret', 'salt', 100000, 512, 'sha512');
console.log(key);  // '3745e48...aa39b34'const crypto = require('node:crypto');
crypto.DEFAULT_ENCODING = 'hex';
const key = crypto.pbkdf2Sync('secret', 'salt', 100000, 512, 'sha512');
console.log(key);  // '3745e48...aa39b34'

可以使用 crypto.getHashes() 检索支持的摘要函数数组。

相关用法


注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 crypto.pbkdf2Sync(password, salt, iterations, keylen, digest)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。