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