Зашифруйте и расшифруйте видеофайл в JavaScript с помощью CryptoJS - PullRequest
0 голосов
/ 23 мая 2018

Я хотел бы знать, как зашифровать и расшифровать видеофайл с помощью JavaScript.Я пытался сделать это с библиотекой Crypto-js, но не могу воспроизвести ее после расшифровки.В следующем коде я пытаюсь взять входящее видео для его шифрования и после расшифровки воспроизвести его из HTML и загрузить файл:

 input.on('change', function (e) {
      let file = e.target.files[0];
      let reader = new FileReader();
      reader.onload = function () {
        let fileLeida = reader.result;
        let videoEncriptado = CryptoJS.AES.encrypt(fileLeida, getCookie('clave')).toString();
        let videoDesencriptado = CryptoJS.AES.decrypt(videoEncriptado, getCookie('clave')).toString(CryptoJS.enc.Utf8);
        var videoNode = document.getElementsByTagName('video')[0];
        let blob = new Blob([videoDesencriptado], {type: "video/mp4"});
        let url = URL.createObjectURL(blob);
        let element = document.createElement('a');
        videoNode.setAttribute('href', url);
        videoNode.play();
        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(file);
});

Заранее спасибо.


Код обновлен, но все еще не работает:

let file = e.target.files[0];
      let reader = new FileReader();
      reader.onload = function () {
        var fileLeida = CryptoJS.lib.WordArray.create(reader.result);
        console.log(fileLeida);
        let videoEncriptado = CryptoJS.AES.encrypt(fileLeida, getCookie('clave'));
        let videoDesencriptado = CryptoJS.AES.decrypt(videoEncriptado, getCookie('clave'));
        console.log(videoDesencriptado);
        var videoNode = document.getElementsByTagName('video')[0];
        let blob = new Blob([videoDesencriptado], {type: "video/mp4"});
        let url = URL.createObjectURL(blob);
        let element = document.createElement('a');
        videoNode.setAttribute('href', url);
        videoNode.play();
        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.readAsArrayBuffer(file);

1 Ответ

0 голосов
/ 24 мая 2018

Вы не можете преобразовать двоичные данные в строку, потому что по своей сути это не строка ... В любом месте вашего кода, который у вас есть toString, есть ошибка.

Ваш видеофайл представляет собой двоичные данные, которыев видео формате.Не в формате UTF8.Почему вы пытаетесь построить из нее строку, мне не под силу.

...