Search code examples
javascriptnode.jsencryptionaescryptojs

Encrypt and cannot decrypt back


My problem is that I wrote a program that encrypts and decrypts files but doesn't decrypt it properly. I use AES-256 algorithm.

File system: There are files in project folder:

main.js
package.json
package-lock.json
files
  text1.txt

Here is main.js file:

    // Import modules
    fs = require('fs');
    aes = require('aes256');

    // Change directory
    process.chdir('files');

    // Choosing global variables
      path = process.cwd();
      key = 'test';

    // Encrypt and decrypt files
      enc = file => {
       return aes.encrypt(key,file)
      }
      decr = encr => {
        return aes.decrypt(key,encr)
      }

    // Encrypt file
    fl = fs.readFileSync('file1.txt').toString();
    fs.writeFileSync('file1.txt',enc(fl));

    // Timeout
    setTimeout(()=> {

    // Read file again and decrypt
    newfl = fs.readFileSync('file1.txt').toString()
    fs.writeFileSync('file1.txt',decr(fl))

    }, 3000);

If I run node main it firstly encrypts a file, then decrypts:

First step:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Second step:

wuv5VqCy3BEC1TeCikiZeYVNHTCJh5eDLCMgTIaKbMk95rBO6419DSUxjCC2d6Ps4s6UtiNSimFFLjzeDWlUML8W3KXNCGrEzu1aj5w9+uUHj34PSBTOLm6ynWs/SPVKoSl5oc5Fn4lGf4CxhuTLUD0C3UnuYwmQ/RYcYtCB/s1t2HiHUxluU4GUs9ge7j8mJUjj55fklaFJ+D9S1nBGIIQj47itbpY+5znnFv4bBumNeurV31F1Igf60ZSNScXFs5dg6oROhZiY33/DxvuwcewqElQzdXbfinHa7h99vl0hSvqSmHOH3Txt/vMQuGc8UovHZFwNsRN6uME0iQ+U+O71aXN6+gf1sn81fDdUB3t7vlgzjn6fEAQdrXSlUq75IFAYbOPnndyzkLFcGI6fklCMFq0JwwbhdtTlCijmah3hTKf1Lm6oQrOOLHkJG3nIxLengVauH9gWUYbJWdZEH7ygqnQbC/LC278bEsQXEwkCte+3Y6paBrgER/LwWFxgYnol0nVS2+kv1wa7zbf+aJhuLXidLVxX49cv1Uq+h0sbcXTSizTuOv9OzUfG8Ykmg9DMBo7Fu1RWBRh85AHZEYVFW8li/79dEgTRzjT5CHg=</pre>

Third step:

e|´��x���>�!4��5������$�ʊ��
f�sٹYa��A��+.-mҧ5p

Why it doesn't decrypt back?


Solution

  • you need to pass encrypted file content to decr function, you are passing old file content for decryption

    Change

    setTimeout(()=> {
    
    // Read file again and decrypt
    newfl = fs.readFileSync('file1.txt').toString()
    fs.writeFileSync('file1.txt',decr(fl))
    
    }, 3000);
    

    to

    setTimeout(()=> {
    
    // Read file again and decrypt
    newfl = fs.readFileSync('file1.txt').toString()
    fs.writeFileSync('file1.txt',decr(newfl))
    
    }, 3000);