Node.js | crypto.createCipheriv () Метод

Опубликовано: 3 Августа, 2021

Метод crypto.createCipheriv () - это встроенный интерфейс прикладного программирования криптомодуля, который используется для создания объекта Cipher с указанным алгоритмом, ключом и вектором инициализации (iv).

Синтаксис:

 crypto.createCipheriv (алгоритм, ключ, iv, параметры)

Параметры: этот метод принимает четыре параметра, как указано выше и описано ниже:

  • алгоритм: это значение строкового типа, зависящее от OpenSSL . Примеры: aes192 , aes256 и т. Д.
  • key: это необработанный ключ, который используется алгоритмом, и iv. Он содержит строку , буфер , TypedArray или DataView . Ключом может быть KeyObject ( необязательно) типа secret.
  • iv: Это вектор инициализации, который должен быть неопределенным и очень уникальным. Однако идеальный iv будет криптографически случайным. Это не должно быть секретом. Он может содержать данные типа String , Buffer , TypedArray или DataView . Если шифру не требуется iv, тогда он может быть нулевым .
  • options: это необязательный параметр, который используется для управления поведением потока. Это необязательно, кроме случаев, когда в режиме CCM или OCB используется шифр (например, «aes-128-ccm»). В этом случае требуется опция authTagLength, которая определяет длину (байты) тега аутентификации, тогда как в режиме GCM параметр authTagLength не требуется, но его можно использовать для установки длины тега аутентификации, который будет возвращен метод getAuthTag (), а значение по умолчанию - 16 байт.

Возвращаемое значение: возвращает объект Cipher.

Примеры ниже иллюстрируют использование метода crypto.createCipheriv () в Node.js:

Пример 1:




// Node.js program to demonstrate the
// crypto.createCipheriv() method
// Includes crypto module
const crypto = require( 'crypto' );
// Difining 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( "GeeksforGeeks" );
console.log(output);

Выход:

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

Пример 2:




// 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" );

Выход:

 Выполнено
MfHwhG / WPv + TIbG / qM78qA ==

Ссылка: https://nodejs.org/api/crypto.html#crypto_crypto_createcipheriv_algorithm_key_iv_options