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


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


crypto.pbkdf2(password, salt, iterations, keylen, digest, callback)

历史
版本变化
v18.0.0

将无效回调传递给 callback 参数现在会抛出 ERR_INVALID_ARG_TYPE 而不是 ERR_INVALID_CALLBACK

v15.0.0

密码和盐参数也可以是ArrayBuffer 实例。

v14.0.0

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

v8.0.0

现在始终需要digest 参数。

v6.0.0

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

v6.0.0

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

v0.5.5

添加于:v0.5.5


参数

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

提供的 callback 函数使用两个参数调用:errderivedKey。如果在导出 key 时发生错误,将设置err;否则 err 将是 null 。默认情况下,成功生成的 derivedKey 将作为 Buffer 传递给回调。如果任何输入参数指定无效值或类型,将引发错误。

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

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

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

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

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

pbkdf2('secret', 'salt', 100000, 64, 'sha512', (err, derivedKey) => {
  if (err) throw err;
  console.log(derivedKey.toString('hex'));  // '3745e48...08d59ae'
});const {
  pbkdf2,
} = require('node:crypto');

pbkdf2('secret', 'salt', 100000, 64, 'sha512', (err, derivedKey) => {
  if (err) throw err;
  console.log(derivedKey.toString('hex'));  // '3745e48...08d59ae'
});

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

import crypto from 'node:crypto';
crypto.DEFAULT_ENCODING = 'hex';
crypto.pbkdf2('secret', 'salt', 100000, 512, 'sha512', (err, derivedKey) => {
  if (err) throw err;
  console.log(derivedKey);  // '3745e48...aa39b34'
});const crypto = require('node:crypto');
crypto.DEFAULT_ENCODING = 'hex';
crypto.pbkdf2('secret', 'salt', 100000, 512, 'sha512', (err, derivedKey) => {
  if (err) throw err;
  console.log(derivedKey);  // '3745e48...aa39b34'
});

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

此 API 使用 libuv 的线程池,这可能会对某些应用程序产生令人惊讶的负面性能影响;有关详细信息,请参阅 UV_THREADPOOL_SIZE 文档。

相关用法


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