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