crypto.pbkdf2(password, salt, iterations, keylen, digest, callback)
| 版本 | 变化 | 
|---|---|
| v18.0.0 | 将无效回调传递给   | 
| v15.0.0 | 密码和盐参数也可以是ArrayBuffer 实例。  | 
| v14.0.0 | 
  | 
| v8.0.0 | 现在始终需要  | 
| v6.0.0 | 现在不推荐在不传递   | 
| v6.0.0 | 
  | 
| v0.5.5 | 添加于:v0.5.5  | 
参数
password<string> | <ArrayBuffer> | <Buffer> | <TypedArray> | <DataView>salt<string> | <ArrayBuffer> | <Buffer> | <TypedArray> | <DataView>iterations<number>keylen<number>digest<string>callback<Function>
提供异步的基于密码的 key 派生函数 2 (PBKDF2) 实现。应用由digest 指定的选定HMAC 摘要算法以从password、salt 和iterations 导出请求字节长度(keylen) 的 key 。
提供的 callback 函数使用两个参数调用:err 和 derivedKey。如果在导出 key 时发生错误,将设置err;否则 err 将是 null 。默认情况下,成功生成的 derivedKey 将作为   传递给回调。如果任何输入参数指定无效值或类型,将引发错误。Buffer 
如果 digest 是 null ,将使用 'sha1'。此行为已弃用,请明确指定 digest。
iterations 参数必须设置为尽可能高的数字。迭代次数越多,派生 key 就越安全,但需要更长的时间才能完成。
salt 应尽可能独特。建议盐是随机的并且至少 16 字节长。有关详细信息,请参阅NIST SP 800-132。
在传递 password 或 salt 的字符串时,请考虑 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 
相关用法
- Node.js crypto.pbkdf2()用法及代码示例
 - Node.js crypto.pbkdf2Sync(password, salt, iterations, keylen, digest)用法及代码示例
 - Node.js crypto.pbkdf2Sync()用法及代码示例
 - Node.js crypto.publicEncrypt()用法及代码示例
 - Node.js crypto.publicDecrypt()用法及代码示例
 - Node.js crypto.privateEncrypt()用法及代码示例
 - Node.js crypto.privateDecrypt()用法及代码示例
 - Node.js crypto.randomFill()用法及代码示例
 - Node.js crypto.createHmac()用法及代码示例
 - Node.js crypto.randomFillSync(buffer[, offset][, size])用法及代码示例
 - Node.js crypto.constants用法及代码示例
 - Node.js crypto.randomInt([min, ]max[, callback])用法及代码示例
 - Node.js crypto.createHash()用法及代码示例
 - Node.js crypto.hkdfSync()用法及代码示例
 - Node.js crypto.randomFillSync()用法及代码示例
 - Node.js crypto.checkPrime()用法及代码示例
 - Node.js crypto.sign()用法及代码示例
 - Node.js crypto.webcrypto用法及代码示例
 - Node.js crypto.generateKeyPairSync(type, options)用法及代码示例
 - Node.js crypto.createCipheriv()用法及代码示例
 - Node.js crypto.scrypt(password, salt, keylen[, options], callback)用法及代码示例
 - Node.js crypto.createVerify()用法及代码示例
 - Node.js crypto.getCurves()用法及代码示例
 - Node.js crypto.generateKeyPair()用法及代码示例
 - Node.js crypto.randomFill(buffer[, offset][, size], callback)用法及代码示例
 
注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 crypto.pbkdf2(password, salt, iterations, keylen, digest, callback)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
