Open In App

Node.js crypto.randomFill() Method

Last Updated : 11 Oct, 2021
Improve
Improve
Like Article
Like
Save
Share
Report

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



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads