size
{number}callback
{Function}err
{Error}buf
{Buffer}
- 返回: {Buffer} 如果未提供
callback
函数。
生成加密强伪随机数据。
size
参数是指示要生成的字节数的数值。
如果提供 callback
函数,则这些字节是异步生成的并且使用两个参数调用 callback
函数:err
和 buf
。
如果发生错误,则 err
是一个 Error
对象,否则为 null
。
buf
参数是包含生成字节的 [Buffer
]。
// 异步的。
const crypto = require('crypto');
crypto.randomBytes(256, (err, buf) => {
if (err) throw err;
console.log(`${buf.length} 位的随机数据: ${buf.toString('hex')}`);
});
如果未提供 callback
函数,则同步地生成随机字节并返回为 [Buffer
]。
如果生成字节遇到问题,将会抛出一个错误。
// 同步的。
const buf = crypto.randomBytes(256);
console.log(
`${buf.length} 位的随机数据: ${buf.toString('hex')}`);
crypto.randomBytes()
方法将在获得足够的熵之后完成。
这通常不会超过几毫秒。
只有在刚开启时才可能会阻塞更久,因为此时整个系统的熵不多。
这个 API 使用 libuv 的线程池,所以在某些时候可能会产生意外的性能问题,查看 [UV_THREADPOOL_SIZE
] 的文档以了解更多信息。
crypto.randomBytes()
的异步版本在单个线程池请求中执行。
要最小化线程池任务长度变化,请在执行此操作时对大型的 randomBytes
请求进行分区,以完成客户端请求。