Node.js crypto.randomFill() Method

The crypto.randomFill() method is same as crypto.randomBytes() method but the only difference is that here the first argument is buffer that will be filled and it also has a callback function passed as an argument. However, if a callback function is not available then the error is thrown.

Syntax:

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

Parameters: This method accept four parameters as mentioned above and described below:

  • buffer: This parameter holds Buffer, TypedArray, or DataView type of data.
  • offset: It is a number whose default value is 0.
  • size: It is a number whose default value is (buffer.length – offset).
  • callback: It is a function with two parameters namely err and buf.

Return Value: It returns buffer.

Below examples illustrate the use of crypto.randomFill() method in Node.js:

Example 1:




// Node.js program to demonstrate the 
// crypto.randomFill() method
  
// Including crypto module
const crypto = require('crypto');
  
// Defining buffer
const buf = Buffer.alloc(6);
  
// Calling randomFill method with two
// of its parameters
crypto.randomFill(buf, (err, buf) => {
  
  if (err) throw err;
  
  // Prints random data in buffer
  console.log(buf.toString('ascii'));
});
  
// Calling randomFill method with all
// its parameters
crypto.randomFill(buf, 3, 2, (err, buf) => {
  
  if (err) throw err;
  
  // Prints random data in buffer
  console.log(buf.toString('base64'));
});
  
// The output of this is same as above
crypto.randomFill(buf, 3, 3, (err, buf) => {
  
  if (err) throw err;
    
  console.log(buf.toString('base64'));
});


Output:

&43Jho0s5v0
Jho0s5v0

Here, the last two values are same.

Example 2:




// Node.js program to demonstrate the 
// crypto.randomFill() method
  
// Including crypto module
const crypto = require('crypto');
  
// Defining dataview
const datv = new DataView(new ArrayBuffer(6));
  
// Calling randomFill method with DataView
// instance as buffer
crypto.randomFill(datv, (err, buf) => {
  
  if (err) throw err;
  
  // Prints random data which is encoded
  console.log(Buffer.from(buf.buffer, 
         buf.byteOffset, buf.byteLength)
    .toString('ascii'));
});


Output:

ceVMb

Here, any TypedArray, or DataView instance is passed as buffer and in every run you will get different output.

Reference: https://nodejs.org/api/crypto.html#crypto_crypto_randomfill_buffer_offset_size_callback