Encriptar y Desencriptar Archivos con Node.js y Crypto-js: Guía paso a paso

Introducción

En este artículo aprenderás cómo encriptar y desencriptar archivos utilizando Node.js y la biblioteca Crypto-js. La encriptación es importante para proteger la información confidencial de terceros malintencionados, mientras que la desencriptación es el proceso inverso para acceder a la información en su formato original. Sigue leyendo para obtener una guía paso a paso sobre cómo utilizar Node.js y Crypto-js para encriptar y desencriptar archivos.

Requisitos previos Antes de empezar

Necesitarás tener instalado Node.js en tu sistema. También deberás instalar la biblioteca Crypto-js utilizando npm. Para ello, abre la línea de comandos y escribe el siguiente comando: npm install crypto-js

Funciones de Encriptación y Desencriptación En este código

Se utilizan dos funciones principales para encriptar y desencriptar los archivos: encryp() y decryp(). Estas funciones utilizan la biblioteca Crypto-js para encriptar y desencriptar los datos. La función encryp() toma dos argumentos: el primer argumento es el archivo de datos que se va a encriptar, mientras que el segundo argumento es la clave de encriptación que se utilizará para encriptar los datos. La función decryp(), por otro lado, toma los mismos argumentos pero realiza el proceso inverso de desencriptación.

Uso del Código

Este código utiliza los argumentos pasados desde la línea de comandos para encriptar o desencriptar un archivo. Para ejecutar este código, deberás pasar los siguientes argumentos: el archivo de entrada, la operación (enc para encriptar o des para desencriptar), la clave de encriptación, la profundidad de encriptación y el archivo de salida.

Supongamos que tienes un archivo de texto llamado mi_archivo.txt ubicado en la carpeta raíz de tu proyecto. Quieres encriptar este archivo utilizando una clave secreta "clave_secreta" y profundidad de encriptación "3", y guardar el resultado en un nuevo archivo llamado mi_archivo.cfr. Para hacerlo, debes ejecutar el siguiente comando en la terminal:

node cfrf.js mi_archivo.txt enc clave_secreta 3 mi_archivo.cfr

Este comando pasará los argumentos necesarios para ejecutar el código y encriptar el archivo de entrada mi_archivo.txt. El resultado de la encriptación se escribirá en un nuevo archivo llamado mi_archivo.cfr.

Si deseas desencriptar el archivo mi_archivo.cfr de vuelta a su formato original, debes ejecutar el siguiente comando en la terminal:

node cfrf.js mi_archivo.cfr des clave_secreta 3 mi_archivo.txt

Este comando desencriptará el archivo de entrada mi_archivo.cfr utilizando la misma clave de encriptación y profundidad utilizada anteriormente. El resultado de la desencriptación se escribirá en un nuevo archivo llamado mi_archivo.txt.

Escribir el Archivo de Salida

Una vez que se ha encriptado o desencriptado el archivo, se escribe el resultado en un nuevo archivo utilizando la función fs.write(). Esta función toma varios argumentos, incluyendo el descriptor de archivo, el búfer de datos, la posición de inicio y la longitud de los datos.

Código completo


const CryptoJS = require(‘crypto-js’);

function encryp(datakey){
    return CryptoJS.AES.encrypt(datakey).toString();
}

function decryp(datakey){
    var wACryptoJS.AES.decrypt(datakey);
    return wA.toString(CryptoJS.enc.Utf8);
}

const argsprocess.argv;

if(args.length<7){
    console.log(`Uso: node cfrf.js <file-input> <op [‘enc’ || ‘des’]> <pass> <deep> <file-out>\n\n 
                 Ejem: node cfrf.js texto.txt enc clave_secreta 3 texto.txt.cfr`);
    return;
}

var file_inpargs[2];
var opargs[3];
var passargs[4];
var deepargs[5];
var file_outargs[6];


var fs = require(‘fs’);
var binary = fs.readFileSync(file_inp);

var buffer=null;

if(op==‘enc’){    
    let base64data = binary.toString(‘base64’);
    let enc=base64data;
    for (let i = 1i <= deepi++) {
        encencryp(encpass);     
    }
    
    buffer = Buffer.from(enc«utf-8»);
}else if(op==‘des’){
    let dataSbinary.toString(«ascii»);
    let dec=dataS;
    for (let i = 1i <= deepi++) {
        decdecryp(decpass); 
    }
    buffer = Buffer.from(dec‘base64’);
}

fs.open(file_out‘w’function(errfd) {
    if (err) {
        throw ‘No se puede crear el archivo: ‘ + err;
    }
    
    fs.write(fdbuffer0buffer.lengthnullfunction(err) {
        if (errthrow ‘Error al escribir en el archivo: ‘ + err;
        fs.close(fdfunction() {});
    });
});

Conclusión

En resumen, este código muestra cómo utilizar Node.js y Crypto-js para encriptar y desencriptar archivos de manera eficiente y segura. Al seguir los pasos de esta guía, podrás proteger la información confidencial en tus archivos y prevenir la accesibilidad no autorizada. No olvides instalar Node.js y la biblioteca Crypto-js antes de comenzar y asegúrate de seguir los pasos cuidadosamente para obtener los resultados deseados.

Deja un comentario