crypto.randomBytes(size[, callback])
版本 | 變化 |
---|---|
v18.0.0 | 將無效回調傳遞給 |
v9.0.0 | 將 |
v0.5.8 | 添加於:v0.5.8 |
參數
size
<number> 要生成的字節數。size
不得大於2**31 - 1
。callback
<Function>- 如果未提供
callback
函數,則返回: <Buffer> 。
生成加密的強偽隨機數據。 size
參數是一個數字,表示要生成的字節數。
如果提供了 callback
函數,則會異步生成字節,並使用兩個參數調用 callback
函數:err
和 buf
。如果發生錯誤,err
將是一個Error
對象;否則為 null
。 buf
參數是一個包含生成字節的
。Buffer
// Asynchronous const { randomBytes } = await import('node:crypto'); randomBytes(256, (err, buf) => { if (err) throw err; console.log(`${buf.length} bytes of random data: ${buf.toString('hex')}`); });
// Asynchronous const { randomBytes, } = require('node:crypto'); randomBytes(256, (err, buf) => { if (err) throw err; console.log(`${buf.length} bytes of random data: ${buf.toString('hex')}`); });
如果未提供 callback
函數,則同步生成隨機字節並以
的形式返回。如果生成字節時出現問題,將引發錯誤。Buffer
// Synchronous const { randomBytes } = await import('node:crypto'); const buf = randomBytes(256); console.log( `${buf.length} bytes of random data: ${buf.toString('hex')}`);
// Synchronous const { randomBytes, } = require('node:crypto'); const buf = randomBytes(256); console.log( `${buf.length} bytes of random data: ${buf.toString('hex')}`);
在有足夠的可用熵之前,crypto.randomBytes()
方法不會完成。這通常不會花費超過幾毫秒的時間。可以想象,生成隨機字節的唯一時間可能會阻塞更長的時間是在啟動之後,此時整個係統的熵仍然很低。
此 API 使用 libuv 的線程池,這可能會對某些應用程序產生令人驚訝的負麵性能影響;有關詳細信息,請參閱
文檔。UV_THREADPOOL_SIZE
crypto.randomBytes()
的異步版本在單個線程池請求中執行。為了最大限度地減少線程池任務長度變化,請在執行客戶端請求時對大型 randomBytes
請求進行分區。
相關用法
- Node.js crypto.randomBytes()用法及代碼示例
- Node.js crypto.randomFill()用法及代碼示例
- Node.js crypto.randomFillSync(buffer[, offset][, size])用法及代碼示例
- Node.js crypto.randomInt([min, ]max[, callback])用法及代碼示例
- Node.js crypto.randomFillSync()用法及代碼示例
- Node.js crypto.randomFill(buffer[, offset][, size], callback)用法及代碼示例
- Node.js crypto.randomInt()用法及代碼示例
- Node.js crypto.randomUUID()用法及代碼示例
- Node.js crypto.createHmac()用法及代碼示例
- Node.js crypto.constants用法及代碼示例
- 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.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.createDiffieHellman()用法及代碼示例
注:本文由純淨天空篩選整理自nodejs.org大神的英文原創作品 crypto.randomBytes(size[, callback])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。