Skip to content
Related Articles
Open in App
Not now

Related Articles

Node.js crypto.randomFill() Method

Improve Article
Save Article
  • Last Updated : 11 Oct, 2021
Improve Article
Save Article

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


My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!