@@ -43,48 +43,40 @@ const demonstrateFileEncryption = () => {
4343 //create random initialization vector
4444 let iv = forge . random . getBytesSync ( 16 ) ;
4545
46- // read file and encrypt/decrypt with an ansynchronous control flow
47- let input ;
48- let encrypted ;
49- fs . readFile ( "file.txt" , ( error , data ) => {
50- input = data ;
46+ // ENCRYPT the file
47+ let input = fs . readFileSync ( "file.txt" ) ;
48+ let cipher = forge . cipher . createCipher ( "AES-GCM" , key ) ;
49+ cipher . start ( { iv : iv } ) ;
50+ // node buffer and forge buffer differ, so the node buffer must be converted to a forge Buffer
51+ cipher . update ( forge . util . createBuffer ( input . toString ( "binary" ) ) ) ;
52+ cipher . finish ( ) ;
53+ let tag = cipher . mode . tag ;
54+ encrypted = forge . util . createBuffer ( ) ;
55+ encrypted . putBuffer ( cipher . output ) ;
56+ // node buffer and forge buffer differ, so the forge buffer must be converted to a node Buffer
57+ encrypted = Buffer . from ( encrypted . getBytes ( ) , "binary" ) ;
5158
52- // ENCRYPT the file
53- let cipher = forge . cipher . createCipher ( "AES-GCM" , key ) ;
54- cipher . start ( { iv : iv } ) ;
55- // node buffer and forge buffer differ, so the node buffer must be converted to a forge Buffer
56- cipher . update ( forge . util . createBuffer ( data . toString ( "binary" ) ) ) ;
57- cipher . finish ( ) ;
58- let tag = cipher . mode . tag ;
59- encrypted = forge . util . createBuffer ( ) ;
60- encrypted . putBuffer ( cipher . output ) ;
61- // node buffer and forge buffer differ, so the forge buffer must be converted to a node Buffer
62- encrypted = Buffer . from ( encrypted . getBytes ( ) , "binary" ) ;
63-
64- // write encrypted file
65- fs . writeFile ( "file.enc.txt" , encrypted , error => {
66- // DECRYPT the file
67- let decipher = forge . cipher . createDecipher ( "AES-GCM" , key ) ;
68- decipher . start ( {
69- iv : iv ,
70- tag : tag
71- } ) ;
72- // node buffer and forge buffer differ, so the node buffer must be converted to a forge Buffer
73- decipher . update ( forge . util . createBuffer ( encrypted . toString ( "binary" ) ) ) ;
74- decipher . finish ( ) ;
75- let decrypted = forge . util . createBuffer ( ) ;
76- decrypted . putBuffer ( decipher . output ) ;
77- // node buffer and forge buffer differ, so the forge buffer must be converted to a node Buffer
78- decrypted = Buffer . from ( decrypted . getBytes ( ) , "binary" ) ;
79-
80- fs . writeFile ( "file.dec.txt" , decrypted , error => {
81- logger . info (
82- "Decrypted file content and original file content are the same: %s" ,
83- Buffer . compare ( input , decrypted ) === 0 ? "yes" : "no"
84- ) ;
85- } ) ;
86- } ) ;
59+ // write encrypted file
60+ fs . writeFileSync ( "file.enc.txt" , encrypted ) ;
61+ // DECRYPT the file
62+ let decipher = forge . cipher . createDecipher ( "AES-GCM" , key ) ;
63+ decipher . start ( {
64+ iv : iv ,
65+ tag : tag
8766 } ) ;
67+ // node buffer and forge buffer differ, so the node buffer must be converted to a forge Buffer
68+ decipher . update ( forge . util . createBuffer ( encrypted . toString ( "binary" ) ) ) ;
69+ decipher . finish ( ) ;
70+ let decrypted = forge . util . createBuffer ( ) ;
71+ decrypted . putBuffer ( decipher . output ) ;
72+ // node buffer and forge buffer differ, so the forge buffer must be converted to a node Buffer
73+ decrypted = Buffer . from ( decrypted . getBytes ( ) , "binary" ) ;
74+
75+ fs . writeFileSync ( "file.dec.txt" , decrypted ) ;
76+ logger . info (
77+ "Decrypted file content and original file content are the same: %s" ,
78+ Buffer . compare ( input , decrypted ) === 0 ? "yes" : "no"
79+ ) ;
8880 } catch ( error ) {
8981 logger . error ( error . message ) ;
9082 }
0 commit comments