我正在编写一个File Uploader脚本,支持在上传之前对任何文件类型进行加密。目标上载服务器是一个PHP脚本,用于处理上载并将加密数据解密回原始状态。
我在JavaScript中编写了一个CryptoJS编码器,如下所示:
var files = document.getElementById('encrypt-input').files;
var key = CryptoJS.enc.Hex.parse('12345');
var iv = CryptoJS.enc.Hex.parse("abcdef9876543210abcdef9876543210");
function readFile(index) {
if (index >= files.length) {
$.ajax({
url: 'upload.php',
data: {
files: JSON.stringify(formData)
},
dataType: 'json',
type: 'POST',
success: function(data) {
toastr.success('Your files have been uploaded safely!', 'Yahoo!');
step(1);
},
error: function(err) {
toastr.error('Something went wrong with the upload! Please check uploader logs for more details.', 'Stop1');
}
});
return;
}
var file = files[index];
reader.onload = function(e) {
var encrypted = CryptoJS.AES.encrypt(e.target.result, key, {iv: iv});
sfu_encrypted[index] = {
name: file.name,
type: file.type,
data: encrypted.ciphertext.toString()
};
readFile(index + 1)
}
reader.readAsBinaryString(file);
}
readFile(0);
现在我坚持解密加密,将文件写回PHP中的原始状态。因此,当我在本地计算机上上传文本文件时,我应该可以从服务器上传的文件中读取它。
此项目的目标是使用CryptoJS AES保护文件上传。