Node.js 中的 Crypto.randomBytes

2025年2月27日 | 阅读 3 分钟

在本文中,我们将讨论 Node.js 中的 Crypto.randomBites,包括其语法、参数和示例。Node.js 中的 crypto 模块提供了许多加密功能,以帮助开发人员构建安全可靠的应用程序。该模块中最重要的函数之一是 crypto.randomBytes。如果您需要生成保证不可预测的随机数据,并可用于加密、令牌生成等各种目的,那么此函数非常重要。

Crypto.randomBytes 的用途

crypto.randomBytes 的主要功能是创建 Buffer 类型的随机数据。这种随机数据来自密码学安全的伪随机数生成器 (CSPRNG)。这意味着 CSPRNG 生成的字节可用于系统中的安全关键操作。

语法

它具有以下语法:

参数

该函数接受两个参数

  • Size: Size 指定要作为输出返回的字节数。
  • Callback: 这是一个由 errbuf 两个参数组成的函数。这些字节是同步生成的。如果指定的代码中有回调函数,则字节是异步生成的。

返回值

如果提供了回调函数,则返回一个 Buffer。

示例 1

让我们用一个例子来说明 Node.js 中 crypto.randomBytes() 函数。

输出

 
The random data generated is:
5f90b49342105bd7f08aa0dd259f4188d3a16d947320544aec573c608842c16822eea9981b3f455df96faca6b6c59fec8ca8d6f9d13ea6596fdab2f6f42a14b876c365f86d0d6e87b67e4afec7d934cf86c7a5acfa9c1544d3e21ad7a0ac30e77fb8b280d8705960789e3ebd7c9e359708cf991683427d54eadfeb3ad8a68c   

说明

  • 上面的 Node.js 程序演示了如何使用 crypto.randomBytes() 方法生成所需大小的随机数据,该数据是密码学安全的。首先,程序使用必要的库,例如 crypto 模块,它提供了加密函数的使用。
  • 之后,调用 randomBytes 函数,并传入两个参数:要生成的随机字节数(此处使用了 127)和一个用于写入结果的回调函数。回调函数中还有错误检查,用于检查生成已填写的 PDF 表单时是否发生任何错误。如果发生错误,错误消息将打印到控制台,并且函数将终止。
  • 如果没有发生错误,则生成的随机字节将存储在一个缓冲区中,然后通过 buffer.toString('hex') 转换为十六进制字符串。然后将此十六进制字符串打印到控制台,以便以易于阅读的格式显示随机数据。

示例 2

让我们用另一个例子来说明 Node.js 中 crypto.randomBytes() 函数。

输出

 
The random  data generated is:
107b8b331a931014fbacfb8cc3c8ce692af6613c11a94e8347fb887b7f7b95697857ffa439c0a7396fd8fd495d1d45464a73ec2a821636b65ab4bb2b   

说明

  • 这个 Node.js 程序演示了 crypto.randomBytes() 方法的应用。该方法用于生成特定大小的随机数据,该数据也被认为对于加密是安全的。randomBytes() 方法以参数 60 调用,其中应生成 60 个随机字节。此方法也是同步的,它会阻塞事件循环,直到随机字节完全生成并存储在 Buffer 对象中。
  • 从该缓冲区中,程序继续使用函数将其转换为十六进制字符串,buffer.toString('hex') 是最常用的表示二进制数据的可读格式之一。最后,程序将此十六进制字符串与描述性消息“生成的随机数据是:”一起打印到控制台。这种方法适用于需要生成简单、安全的随机数据(如令牌或密钥)的场景。

结论

总之,Node.js 中的 crypto.randomBytes 方法是利用数学计算生成强大安全随机数据的有效方法。它为需要使用随机数的安全应用程序生成随机数,例如加密、令牌化和其他安全相关的任务。

crypto 模块提供了一个用于生成随机字节的方法,该方法可以是同步的或异步的,具体取决于最后一个参数。同步版本是基本的,它会阻塞事件循环直到随机字节生成完成,而异步版本则允许应用程序在等待随机数据时执行其他操作。