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
Please Login to comment...