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])。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。