Encriptar y desencriptar archivos con NodeJs y crypto-js

Requisitos

Primero debes iniciar el proyecto de npm con npm init -y y luego deberás instalar la dependencia de crypto-js con npm i --save crypto-js

Ahora crea un archivo llamado cfrf.js y pega el siguiente código en el archivo. 


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() {});
    });
});

 Uso

Parámetros:

<file-input>: Archivo de entrada. Este puede ser cualquier archivo incluyendo imágenes y video. (Nota: este código solo soporta archivos de poco tamaño, ya que se encripta en memoria y dependerá de cuanta tengas.)

<op ['enc' || 'des']>: Modo de operación, encriptar con enc y desencriptar con des

<pass>: Clave de encriptación.

<deep>: Profundidad al encriptar y al desencriptar. Básicamente es cuantas veces se encriptará o desencriptará el archivo.

<file-out>: Archivo de salida.

Para encriptar ejecuta el siguiente comando node cfrf.js archivo.txt enc clave_secreta 3 archivo.txt.cfr esto generará un archivo de salida cuyo contenido está encriptado en base64. 

Y para desencriptar ejecuta lo siguiente node cfrf.js archivo.txt.cfr des clave_secreta 3 archivo.txt


Comentarios

Publicar un comentario

Entradas más populares de este blog

Agregar datos a una tabla desde una fuente externa con JQUERY

Recorrer campos de un formulario con JQuery