Puedes descargar el proyecto desde este enlace
El otro día surgió una necesidad para encriptar contenido bajo el algoritmo AES y es la que te vengo a mostrar a continuación en la cual use Node para solventar mi necesidad. Pude haber usando cualquier lenguaje que me viniera en gana pero no quería instalar nada mas.
Dependencias:
- NodeJS >= 12
- Crypto-JS
Aplicaciones recomendadas:
- Git bash
- Visual Studio Code
Lo primero que necesitamos es tener una clave única (KEY) y un vector de inicialización (IV). Este ultimo no es necesario pero agrega un extra de seguridad a nuestro contenido. Para lo cual usaremos el bash de git para utilizar openssl
KEY
openssl rand -base64 24
IV
openssl rand -base64 12
Ahora que ya tenemos estas 2 cadenas únicas. Podemos proceder a escribir nuestro código.
npm init -y
Luego hacemos una modificación en el package.json para que admita módulos
"type": "module",
Instalamos la dependencia de Crypto-JS
npm i crypto-js --save
Ahora importamos los objetos necesarios para interactuar en nuestro archivo por defecto (en mi caso he creado a app.js)
import pkg from 'crypto-js'; const { enc, AES, mode: _mode, pad } = pkg;
Creamos las constantes de KEY e IV y les asignamos los valores que nos dio el bash de Git
const KEY = enc.Utf8.parse('cTY/OJukmaVM4w4UxiUI4cTYq2QGDB8c'); const IV = enc.Utf8.parse('gqeSw9OvjqA3kmGP');Ahora crearemos las 2 funciones necesarias para trabajar con el encrypt y el decrypt de los datos
function encrypt(data) { const encrypted = AES.encrypt(data ? data : '', KEY, { iv: IV, mode: _mode.CBC, padding: pad.Pkcs7 }); return encrypted.toString(); } function decrypt(data) { const encrypted = AES.decrypt(data ? data : '', KEY, { iv: IV, mode: _mode.CBC, padding: pad.Pkcs7 }); return encrypted.toString(enc.Utf8); }
Y listo ya esta la base de nuestro aplicativo, ahora ya podemos utilizarlas dentro de un log para probar
console.log(encrypt("Hola Mundo"));
Y similar para el decrypt del contenido
console.log(decrypt("11qK1NkKJpOR0DG6BOjIvA=="));
Espero te haya gustado el ejemplo, su utilidad puede ser tan compleja como te imagines, desde el simple texto mostrado en este ejemplo o como la creación de archivos encriptados
Comentarios
Publicar un comentario