1

I tried to encode and decode file, but input file doesn't match the output. (via openpgp#204)

I tried to do this input.tar.gz -> bin -> encrypt -> medium.txt -> decrypt -> bin -> output.tar.gz with this code, but input.tar.gz is not equal to output.tar.gz. What I'm doing wrong?

code:

var express = require('express');
var fs = require('fs');
var http = require('http');
var _ = require('lodash');
var app = express();
var bodyParser = require('body-parser');
var multer = require('multer');
var session = require('express-session');
var cookieParser = require('cookie-parser');
var crypto = require('crypto');
var sh = require('shelljs');
var Targz = require('tar.gz');
var Email = require('email').Email;
var dest = './blackbox-tmp/';

var openpgp = require('openpgp');
var key = openpgp.generateKeyPair(1, 512, 'black', 'box');

var privateKeys = openpgp.key.readArmored(key.privateKeyArmored);
var publicKeys = openpgp.key.readArmored(key.publicKeyArmored);

var privateKey = privateKeys.keys[0];
var publicKey = publicKeys.keys[0];

var input = 'input.tar.gz';
var encrypted = 'middle.txt';
var decrypted = 'output.tar.gz';


// ENCRYPT
fs.readFile(input, { flag: 'r' }, function(err, fd) {
    if (err) throw err;
    console.log('Read input');

    var file = new Buffer(fd, 'binary').toString();
    console.log(fd);

    var encryptedMsg = openpgp.encryptMessage(publicKeys.keys, file);
    console.log('Encrypt archive');


    fs.writeFile(encrypted, encryptedMsg, { flag: 'w', encoding: 'utf8' }, function(err) {
        if (err) throw err;
        console.log('Encrypted file has been writed');

        // DECRYPT
        fs.readFile(encrypted, { flag: 'r', encoding: 'utf8' }, function(err, msg) {
            if (err) throw err;
            console.log('Encrypted has been read');


            // console.log(msg);
            msg = openpgp.message.readArmored(msg);

            if (privateKey.decrypt('box')) {

                console.log('decrypt archive');
                var decryptedMsg = openpgp.decryptMessage(privateKey, msg);

                var body = new Buffer(decryptedMsg);
                console.log('converted it to binary');
                console.log(body);

                fs.writeFile(decrypted, body, { flag: 'w' }, function(err) {
                    if (err) throw err;
                    console.log('Decrypted file has been writed');
                });

            }

        });

    });

});

PS.
input.txt == output.txt // true
input.txt.zip == output.txt.zip // false WHY?

maybe because of this error issue #210?

Vladimir Starkov
  • 19,264
  • 8
  • 60
  • 114

0 Answers0