Node crypto.createCipheriv() Method

The crypto.createCipheriv() method is an inbuilt application programming interface of the crypto module which is used to create a Cipher object, with the stated algorithm, key, and initialization vector (iv).
Syntax: 

crypto.createCipheriv( algorithm, key, iv, options )

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

  • algorithm: It is a string-type value that dependent on OpenSSL. The examples are aes192, aes256, etc.
  • key: It is the raw key that is used by the algorithm and iv.
  • iv: It is an initialization vector that must be uncertain and very unique. However, an ideal iv will be cryptographically random. It don’t need to be secret.
  • options: It is an optional parameter that is used to control stream behavior. It is optional except when a cipher is used in CCM or OCB mode(e.g. ‘aes-128-ccm’).

Return Value: It returns Cipher object.

Example 1: Below examples illustrate the use of crypto.createCipheriv() method in NodeJs:

Javascript




// Node.js program to demonstrate the    
// crypto.createCipheriv() method
 
// Includes crypto module
const crypto = require('crypto');
 
// Defining algorithm
const algorithm = 'aes-256-cbc';
 
// Defining key
const key = crypto.randomBytes(32);
 
// Defining iv
const iv = crypto.randomBytes(16);
 
// An encrypt function
function encrypt(text) {
 
    // Creating Cipheriv with its parameter
    let cipher = crypto.createCipheriv(
        'aes-256-cbc', Buffer.from(key), iv);
 
    // Updating text
    let encrypted = cipher.update(text);
 
    // Using concatenation
    encrypted = Buffer.concat([encrypted, cipher.final()]);
 
    // Returning iv and encrypted data
    return {
        iv: iv.toString('hex'),
        encryptedData: encrypted.toString('hex')
    };
}
 
// Displays output
var output = encrypt("w3wiki");
console.log(output);


Output: 

{ iv: 'fb1f4b0a7daaada6cae678df32fad0f0',
encryptedData: '41aad2618892aa3d1850d336ad15b50e' }

Example 2: Below examples illustrate the use of crypto.createCipheriv() method in NodeJs:

Javascript




// Node.js program to demonstrate the    
// crypto.createCipheriv() method
 
// Includes crypto module
const crypto = require('crypto');
 
// Defining algorithm
const algorithm = 'aes-192-cbc';
 
// Defining password
const password = 'bncaskdbvasbvlaslslasfhj';
 
// Defining key
const key = crypto.scryptSync(password, 'GfG', 24);
 
// Defininf iv
const iv = Buffer.alloc(16, 0);
 
// Creating cipher
const cipher = crypto.createCipheriv(algorithm, key, iv);
 
// Declaring encrypted
let encrypted = '';
 
// Reading data
cipher.on('readable', () => {
    let chunk;
    while (null !== (chunk = cipher.read())) {
        encrypted += chunk.toString('base64');
    }
});
 
// Handling end event
cipher.on('end', () => {
    console.log(encrypted);
});
 
// Writing data
cipher.write('CS-Portal');
cipher.end();
console.log("done");


Output: 

done
MfHwhG/WPv+TIbG/qM78qA==

We have a Cheat Sheet on Nodejs crypto methods where we covered all the crypto methods to check those please go through Node Crypto Module Complete Reference this article.