Я пытаюсь зашифровать видео с помощью библиотеки 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);
});
};