Método Node.js crypto.createCipheriv()

El método crypto.createCipheriv() es una interfaz de programación de aplicaciones incorporada del módulo criptográfico que se utiliza para crear un objeto Cipher, con el algoritmo, la clave y el vector de inicialización indicados (iv).
Sintaxis: 

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

Parámetros: Este método acepta cuatro parámetros como se mencionó anteriormente y se describe a continuación:  

  • algoritmo: es un valor de tipo string que depende de OpenSSL . Los ejemplos son aes192 , aes256 , etc.
  • clave: es la clave sin formato que utiliza el algoritmo y iv. Contiene la string , Buffer , TypedArray o DataView . La clave puede ser un KeyObject opcionalmente de tipo secreto.
  • iv: Es un vector de inicialización que debe ser incierto y muy único. Sin embargo, un iv ideal será criptográficamente aleatorio. No necesita ser secreto. Puede contener datos de tipo string , Buffer , TypedArray o DataView . Si el cifrado no requiere iv , entonces puede ser nulo .
  • opciones: es un parámetro opcional que se utiliza para controlar el comportamiento de la secuencia. Es opcional excepto cuando se utiliza un cifrado en modo CCM u OCB (por ejemplo, ‘aes-128-ccm’). En ese caso, se requiere la opción authTagLength que define la longitud (bytes) de la etiqueta de autenticación mientras que, en el modo GCM , la opción authTagLength no es necesaria pero se puede usar para establecer la longitud de la etiqueta de autenticación que devolverá el método getAuthTag() y el valor predeterminado es de 16 bytes.

Valor devuelto: Devuelve el objeto Cipher .
Los siguientes ejemplos ilustran el uso del método crypto.createCipheriv() en Node.js:
Ejemplo 1:  

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("GeeksforGeeks");
console.log(output);

Producción: 

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

Ejemplo 2:  

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

Producción: 

done
MfHwhG/WPv+TIbG/qM78qA==

Referencia: https://nodejs.org/api/crypto.html#crypto_crypto_createcipheriv_algorithm_key_iv_options 

Publicación traducida automáticamente

Artículo escrito por nidhi1352singh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *