當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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