Как расшифровать файл в CryptoJS, зашифрованный Nodejs с помощью RC4 - PullRequest
0 голосов
/ 04 декабря 2018

Я хочу расшифровать (используя cryptojs) зашифрованный файл mp4 (используя nodejs crypto rc4). Я не могу расшифровать файл, так как я новичок в nodejs. Любая помощь приветствуется.

Ниже приведен код, используемый вnodejs для шифрования (файл-шифратор пакета npm):

var crypto = require('crypto'),
    fs = require('fs');

var Encryptor = {};

Encryptor.encryptFile = function(inputPath, outputPath, key, options, callback) {

  if(typeof options === 'function') {
    callback = options;
    options = {};
  }

  options = Encryptor.combineOptions(options);

  var keyBuf = new Buffer(key);

  var inputStream = fs.createReadStream(inputPath);
  var outputStream = fs.createWriteStream(outputPath);
  var cipher = crypto.createCipher(options.algorithm, keyBuf);

  inputStream.on('data', function(data) {
    var buf = new Buffer(cipher.update(data), 'binary');
    outputStream.write(buf);
  });

  inputStream.on('end', function() {
    try {
      var buf = new Buffer(cipher.final('binary'), 'binary');
      outputStream.write(buf);
      outputStream.end();
      outputStream.on('close', function() {
        return callback();
      });
    } catch(e) {
      fs.unlink(outputPath);
      return callback(e);
    }
  });
};

a

и ниже моего JavaScript-кода я пытаюсь использовать cryptojs

window.resolveLocalFileSystemURL(inputPath, function (file) {
        file.file(function(ffile) {

                          var reader = new FileReader();
                          var imgBlob = new Blob([ffile], { type: 'video/mp4' });
                          reader.onload = function(e) {

                                var text= Encryptor.Utf8ArrayToStr(e.target.result);
                                  var outputString=CryptoJS.RC4.decrypt(text,key,{padding: CryptoJS.pad.NoPadding} );
                                  var buf = new Buffer([outputString],'binary');
                                  var imgBlob = new Blob([outputString], { type: 'video/mp4' });
                                  fileEntry.createWriter(function(fileWriter) {
                                    fileWriter.write(imgBlob);
                                  });
                            //});

                          };

                          reader.onloadend = function(e) {

                                                          var text= Encryptor.Utf8ArrayToStr(e.target.result);//,function(text){
                                  var outputString=CryptoJS.RC4.decrypt(text,key ,{padding: CryptoJS.pad.NoPadding});
                                  var buf = new Buffer([outputString],'binary');
                                  var imgBlob = new Blob([outputString], { type: 'video/mp4' });
                                  fileEntry.createWriter(function(fileWriter) {
                                    fileWriter.write(imgBlob);
                                  });
                            //});
                          };

                          reader.readAsArrayBuffer(ffile);
                      });
                    });

Кто-нибудь знает, как это сделать?Я застрял с этим с давних времен.

...