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?
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);