Зашифруйте видео с помощью CryptoJS, сохраните его в Firebase и смотрите его расшифрованное в видео HTML5 - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь зашифровать видео с помощью библиотеки CryptoJS.Цель состоит в том, чтобы зашифровать его и сохранить в Firebase Storage.Позже, когда вы захотите визуализировать, он расшифровывается и добавляется в качестве URL-адреса к тегу HTML-видео.Я не могу отобразить видео после расшифровки, есть идеи, в чем проблема?У меня такое ощущение, что проблема заключается в том, чтобы рассматривать вывод шифра как строку.Я не знаю, как мне следует относиться к нему, чтобы он продолжал поддерживать свойства видеофайла.Заранее спасибо.

Текущий код:

    //Encrypt and upload function
    function almacenarFicheroGrabacionVideo(file) {
        let storageRef = firebase.storage().ref('videos/' + file.name);
        let reader = new FileReader();
        reader.onload = function () {
          let read = reader.result;
          let task = storageRef.putString(CryptoJS.AES.encrypt(read, getCookie('key')).toString());
          task.on('state_changed', function progress(snapshot) {
          }, function error(err) {
            console.log(err);
          }, function complete() {
            console.log("fichero subido");
          });
        };
        reader.readAsText(file);
      }

//Decrypt and visualize video
  $scope.verVideo = function() {
    firebase.storage().ref('videos/').child('Blurred Bokeh Video 2.mp4').getDownloadURL().then(function (url) {
      fetch(url)
        .then(res => res.blob()) // Gets the response and returns it as a blob
        .then(blob => {
          let reader = new FileReader();
          reader.onload = function () {
            let fileDown = CryptoJS.AES.decrypt(reader.result, getCookie('clave')).toString(CryptoJS.enc.Utf8);
            var videoNode = document.getElementsByTagName('video')[0];
            let blob = new Blob([fileDown], {type: "video/mp4"});
            let url  = URL.createObjectURL(blob);
            let element = document.createElement('a');
            element.setAttribute('href', url);
            element.setAttribute('download', 'Blurred Bokeh Video 2.mp4');
            element.style.display = 'none';
            document.body.appendChild(element);
            element.click();
            document.body.removeChild(element);
          };
          reader.readAsText(blob);
        });
    }).catch(function (error) {
      // Handle any errors
      console.log(error);
    });
  };
...