📜  Node.js crypto.randomBytes() 方法(1)

📅  最后修改于: 2023-12-03 15:33:08.511000             🧑  作者: Mango

Node.js crypto.randomBytes() 方法

crypto.randomBytes(size[, callback]) 是 Node.js 中的一个内置方法,用于生成指定大小的加密强度的随机字节序列。

使用方法
普通方式
const crypto = require('crypto');

// 生成一个随机8字节的 Buffer
const randomBytes = crypto.randomBytes(8);

console.log(randomBytes.toString('hex'));
// 打印出类似于 "f0877c24cd499ec9" 的16进制字符串
Promise 方式
const crypto = require('crypto').promises;

// 等价于:
// const { promises: crypto } = require('crypto');

(async () => {
  // 通过 Promise 生成一个随机16字节的 Buffer
  const randomBytes = await crypto.randomBytes(16);

  console.log(randomBytes.toString('hex'));
  // 打印出类似于 "578cd2abfb2e5416a56670793c36417b" 的16进制字符串
})();
回调方式
const crypto = require('crypto');

// 生成一个随机24字节的 Buffer
crypto.randomBytes(24, (err, buffer) => {
  if (err) throw err;

  console.log(buffer.toString('hex'));
  // 打印出类似于 "fcf3a1ba34d3c0872c10c3618bbeedb67815d36bcac9c070" 的16进制字符串
});
参数说明
  • size (必选):表示生成随机字节数的大小,可以是任意非负整数。
  • callback (可选):表示回调方法,当生成字节序列完成时将调用该函数。
注意事项
  1. crypto.randomBytes() 方法生成的字节序列是加密强度的,应该比使用 Math.random() 或人为构造序列更安全。
  2. 在生成字节序列时需要进行小心,因为未正确使用所生成的字节序列可能会导致严重的安全漏洞。
  3. 当请求一个较大的字节序列时要注意内存限制。
总结

Node.js 的 crypto.randomBytes() 方法是一个生成加密强度的随机字节序列的内置方法。它支持 Promise 和回调两种方式。使用时应该注意正确使用所生成的字节序列,并注意内存限制。