我正在尝试使用JS在上传期间加密文件,然后在下载期间解密它们 - 所有客户端,使用javascript(如Mega / tresorit)。
到目前为止,我的应用程序的基本原则是:
-upload:使用HTML5 FileReader作为基本64字符串读取文件,使用CryptoJS加密,然后发送到PhP
reader = new FileReader();
reader.onload = function(event) {
var encrypted = CryptoJS.AES.encrypt(event.target.result, "Secret Passphrase");
//send to PhP
}
reader.readAsDataURL(files[i]);
-download:通过XMLHTTP请求将文件作为字符串获取,使用CryptoJS解密,我就完成了。
var rawFile = new XMLHttpRequest();
rawFile.open("GET", file, true);
rawFile.onreadystatechange = function ()
{
if(rawFile.readyState === 4)
{
if(rawFile.status === 200 || rawFile.status == 0)
{
var decryped= CryptoJS.AES.decrypt(rawFile.responseText, "Secret Passphrase");
//process....
}
}
}
上面的原则适用于小文件(几MB),但我需要能够处理更大的文件(至少100MB)。
有没有好办法呢?上传可能可以通过使用HTML5 FileReader上传加密块来解决,但是下载呢?我在考虑HTML5 FileSystem API,但它已经不再开发了。
我不是要求任何人为我编写代码,我只是想知道这样做的好/最佳方式是什么以及我应该用什么来搜索/寻找。
谢谢你。