使用CryptoJS加密和解密JavaScript中的视频文件



我想知道如何用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);

您无法将二进制数据转换为字符串,因为它本质上不是字符串... 代码中您toString的任何位置都是错误的。

您的视频文件是视频格式的二进制数据。 不是 UTF8 格式。 你为什么要用它建立一个字符串,这超出了我的范围。

最新更新