Ir al contenido principal

Como encriptar AES con Node JS

 

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:


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

Entradas populares de este blog

Northwind para Mysql y otras

Supongamos que necesitamos una base de datos para comenzar a hacer pruebas y a la vez necesitamos que esa base de datos contenga mucha información con la cual trabajar. En mis tiempos de universidad existía una base de datos que utilizábamos en los laboratorios con SQL Server y c# para mostrar los datos en algún formulario. El nombre era Northwind. El problema es que era solo para SQL Server, pero alguien en se dio a la tarea de exportar esa base de datos a MySql y es justo lo que te vengo a mostrar acá. Hace un tiempo atrás clone de los repositorios de Google Code   esa información (que como algunos de ustedes sabrá dejara de estar al servicio de todos en un tiempo). Modifique un poco la DB de Mysql para que se pudiera ejecutar el script sin ningún problema. Lo interesante de todo esto es que puedes utilizar los demás script para diferentes gestores de base de datos Se advierte que para poder usarlas adecuadamente hay que modificar los campos de tipo longblob y que hay un

How to upload File from form data POST in Android with Retrofit 2

 The last day I explain how to upload a simple CSV file using node . And now I teach how to upload from android device. Get source code here:  GitHub This article is write in java... later I'll add the method for kotlin. The logic is not changed, only the format code. 1) Is necessary add the dependencies in gradle: module implementation 'com.google.code.gson:gson:2.8.6' // RETROFIT // implementation 'com.squareup.retrofit2:retrofit:2.6.2' implementation 'com.squareup.retrofit2:converter-gson:2.6.2' implementation 'com.squareup.retrofit2:converter-scalars:2.5.0' 2) Add permissions in AndroidManifest.xml and modified the application for work with network security policy <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> in applitacion add

Abrir modal cuando se cargue la pagina web

Se advierte que blogger puede cambiar el resultado, pero tranquilo, te dejo un enlace donde lo puedes ver sin mas ni mas haciendo click aquí Una de las cosas interesantes de  usar Bootstrap en tus proyectos es que ya trae muchas funcionalidades como los modales. Algo en particular que me han preguntado mas de una vez es lo siguiente: ¿Puedo abrir un modal al momento de cargar una pagina web? La respuesta es un simple SI y te muestro como hacerlo de manera rápida Ahora simplemente tenemos que mandar a llamar un fragmento de código en nuestro JQuery: $(function(){ $("#myModal").modal(); }); Es algo simple cuando ya conoces la solución claro y espero te sirva mucho