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