• size {number}
    • callback {Function}
      • err {Error}
      • buf {Buffer}
    • 返回: {Buffer} 如果未提供 callback 函数。

    生成加密强伪随机数据。 size 参数是指示要生成的字节数的数值。

    如果提供 callback 函数,则这些字节是异步生成的并且使用两个参数调用 callback 函数:errbuf。 如果发生错误,则 err 是一个 Error 对象,否则为 nullbuf 参数是包含生成字节的 [Buffer]。

    1. // 异步的。
    2. const crypto = require('crypto');
    3. crypto.randomBytes(256, (err, buf) => {
    4. if (err) throw err;
    5. console.log(`${buf.length} 位的随机数据: ${buf.toString('hex')}`);
    6. });

    如果未提供 callback 函数,则同步地生成随机字节并返回为 [Buffer]。 如果生成字节遇到问题,将会抛出一个错误。

    1. // 同步的。
    2. const buf = crypto.randomBytes(256);
    3. console.log(
    4. `${buf.length} 位的随机数据: ${buf.toString('hex')}`);

    crypto.randomBytes() 方法将在获得足够的熵之后完成。 这通常不会超过几毫秒。 只有在刚开启时才可能会阻塞更久,因为此时整个系统的熵不多。

    这个 API 使用 libuv 的线程池,所以在某些时候可能会产生意外的性能问题,查看 [UV_THREADPOOL_SIZE] 的文档以了解更多信息。

    crypto.randomBytes() 的异步版本在单个线程池请求中执行。 要最小化线程池任务长度变化,请在执行此操作时对大型的 randomBytes 请求进行分区,以完成客户端请求。