crypto.scrypt(password, salt, keylen[, options], callback)
曆史
版本 | 變化 |
---|---|
v18.0.0 | 將無效回調傳遞給 |
v15.0.0 | 密碼和鹽參數也可以是ArrayBuffer 實例。 |
v12.8.0、v10.17.0 |
|
v10.9.0 | 添加了 |
v10.5.0 | 添加於:v10.5.0 |
參數
password
<string> | <ArrayBuffer> | <Buffer> | <TypedArray> | <DataView>salt
<string> | <ArrayBuffer> | <Buffer> | <TypedArray> | <DataView>keylen
<number>options
<Object>cost
<number> CPU/內存成本參數。必須是大於一的二的冪。 默認:16384
。blockSize
<number> 塊大小參數。 默認:8
。parallelization
<number> 並行化參數。 默認:1
。N
<number>cost
的別名。隻能指定兩者之一。r
<number>blockSize
的別名。隻能指定兩者之一。p
<number>parallelization
的別名。隻能指定兩者之一。maxmem
<number> 內存上限。 (大約)128 * N * r > maxmem
時出現錯誤。 默認:32 * 1024 * 1024
。
callback
<Function>
提供異步 scrypt 實現。 Scrypt 是一種基於密碼的 key 派生函數,其設計目的是在計算和內存方麵成本高昂,以使蠻力攻擊沒有返回。
salt
應盡可能獨特。建議鹽是隨機的並且至少 16 字節長。有關詳細信息,請參閱NIST SP 800-132。
在傳遞 password
或 salt
的字符串時,請考慮 caveats when using strings as inputs to cryptographic APIs 。
callback
函數使用兩個參數調用:err
和 derivedKey
。 err
是 key 派生失敗時的異常對象,否則 err
是 null
。 derivedKey
作為
傳遞給回調。Buffer
當任何輸入參數指定無效值或類型時,將引發異常。
const { scrypt } = await import('node:crypto'); // Using the factory defaults. scrypt('password', 'salt', 64, (err, derivedKey) => { if (err) throw err; console.log(derivedKey.toString('hex')); // '3745e48...08d59ae' }); // Using a custom N parameter. Must be a power of two. scrypt('password', 'salt', 64, { N: 1024 }, (err, derivedKey) => { if (err) throw err; console.log(derivedKey.toString('hex')); // '3745e48...aa39b34' });
const { scrypt, } = require('node:crypto'); // Using the factory defaults. scrypt('password', 'salt', 64, (err, derivedKey) => { if (err) throw err; console.log(derivedKey.toString('hex')); // '3745e48...08d59ae' }); // Using a custom N parameter. Must be a power of two. scrypt('password', 'salt', 64, { N: 1024 }, (err, derivedKey) => { if (err) throw err; console.log(derivedKey.toString('hex')); // '3745e48...aa39b34' });
相關用法
- Node.js crypto.scrypt()用法及代碼示例
- Node.js crypto.scryptSync()用法及代碼示例
- Node.js crypto.scryptSync(password, salt, keylen[, options])用法及代碼示例
- Node.js crypto.sign()用法及代碼示例
- Node.js crypto.setFips()用法及代碼示例
- 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.publicEncrypt()用法及代碼示例
- Node.js crypto.publicDecrypt()用法及代碼示例
- Node.js crypto.pbkdf2Sync(password, salt, iterations, keylen, digest)用法及代碼示例
- Node.js crypto.createHash()用法及代碼示例
- Node.js crypto.hkdfSync()用法及代碼示例
- Node.js crypto.randomFillSync()用法及代碼示例
- Node.js crypto.checkPrime()用法及代碼示例
- Node.js crypto.webcrypto用法及代碼示例
- Node.js crypto.generateKeyPairSync(type, options)用法及代碼示例
- Node.js crypto.createCipheriv()用法及代碼示例
- Node.js crypto.createVerify()用法及代碼示例
- Node.js crypto.getCurves()用法及代碼示例
- Node.js crypto.generateKeyPair()用法及代碼示例
- Node.js crypto.randomFill(buffer[, offset][, size], callback)用法及代碼示例
- Node.js crypto.randomBytes()用法及代碼示例
注:本文由純淨天空篩選整理自nodejs.org大神的英文原創作品 crypto.scrypt(password, salt, keylen[, options], callback)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。