Node.js 中的 crypto.randomFill() 方法


crypto.randomFill() 方法和 crypto.randomBytes() 方法几乎相同。两者的唯一区别在于,在 randomFill() 方法中,第一个参数是要填充的缓冲区。它还具有一个回调方法,只有在配置回调时遇到错误时才会调用该方法。

语法

crypto.randomFill(buffer, [offset], [size], [callback])

参数

上述参数按如下方式描述 -

  • buffer – 此字段包含数据内容。可能的缓冲区类型为:string、TypedArray、Buffer、ArrayBuffer、DataView。缓冲区的长度不能大于 2**31-1。

  • offset – randomFill 将从中开始的值。默认值为 0。

  • size – 偏移后的缓冲区大小。即 (buffer.length-offset)。此值不能大于 2**31-1。

  • callback – 抛出错误时将调用的函数。

示例

创建一个名为 - randomFill.js 的文件并复制以下代码片段。创建文件后,使用以下命令运行此代码,如下例所示 -

node randomFill.js

randomFill.js

// Node.js program to demonstrate the flow of crypto.randomFill() method

// Importing the crypto module
const crypto = require('crypto');
const fs = require("fs");

// Initialising the buffer bytes value
const buf = Buffer.alloc(6);

// Calling the randomFill method with buffer and a callback
crypto.randomFill(buf, (err, buf) => {
   if (err) throw err;
   // Printing the buffer data value after filling
   console.log(buf.toString('ascii'));
});

//Calling the randomFill with all the parameters defined above
crypto.randomFill(buf, 3, 2, (err, buf) => {
   if (err) throw err;
   // Printing the new random data in buffer
   console.log(buf.toString('base64'));
});

// We can see that the output will be same for below function
crypto.randomFill(buf, 3, 3, (err, buf) => {
   if (err) throw err;
   console.log(buf.toString('base64'));
});

输出

C:\home
ode>> node randomFill.js f!]"+– ZqHdoit8 ZqHdoit8

示例

再看一个示例。

// Node.js program to demonstrate the flow of crypto.randomFill() method

// Importing the crypto module
const crypto = require('crypto');
const fs = require("fs");

// Initialising the buffer bytes value using data view
const data = new DataView(new ArrayBuffer(16));

// Calling the randomFill method with buffer and a callback
crypto.randomFill(data, (err, buf) => {
   if (err) throw err;
   // Printing the randomFill data with encoding
   console.log(Buffer.from(buf.buffer,
      buf.byteOffset, buf.byteLength).toString('ascii'));
});

输出

C:\home
ode>> node randomFill.js >h(Be#D8h0

更新日期:20-5-2021

191 阅读

开启你的 事业

参加课程获取证书

立即开始
广告