Método Node.js crypto.createDecipheriv()

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

Sintaxis:

crypto.createDecipheriv( 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 Decipher .

Los siguientes ejemplos ilustran el uso del método crypto.createDecipheriv() en Node.js:

Ejemplo 1:

// Node.js program to demonstrate the     
// crypto.createDecipheriv() 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 decipher
const decipher = 
    crypto.createDecipheriv(algorithm, key, iv);
  
// Declaring decrypted
let decrypted = '';
  
// Reading data
decipher.on('readable', () => {
  let chunk;
  while (null !== (chunk = decipher.read())) {
    decrypted += chunk.toString('utf8');
  }
});
  
// Handling end event
decipher.on('end', () => {
console.log(decrypted);
});
  
// Encrypted data which is to be decrypted
const encrypted =
  'MfHwhG/WPv+TIbG/qM78qA==';
  
decipher.write(encrypted, 'base64');
decipher.end();
  
console.log("done");

Producción:

done
CS-Portal

Ejemplo 2:

// Node.js program to demonstrate the     
// crypto.createDecipheriv() 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') };
}
  
// A decrypt function
function decrypt(text) {
  
 let iv = Buffer.from(text.iv, 'hex');
 let encryptedText =
    Buffer.from(text.encryptedData, 'hex');
  
 // Creating Decipher
 let decipher = crypto.createDecipheriv(
        'aes-256-cbc', Buffer.from(key), iv);
  
 // Updating encrypted text
 let decrypted = decipher.update(encryptedText);
 decrypted = Buffer.concat([decrypted, decipher.final()]);
  
 // returns data after decryption
 return decrypted.toString();
}
  
// Encrypts output
var output = encrypt("GeeksforGeeks");
console.log(output);
  
// Decrypts output
console.log(decrypt(output));

Producción:

{ iv: '6bbc47a2756d6d6bf315cfd3cc0b711a',  encryptedData: 'fae9a6fb31c0b0668da8c3be1b1da81a' }
GeeksforGeeks

Referencia: https://nodejs.org/api/crypto.html#crypto_crypto_createdecipheriv_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 *