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)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。