将CryptoJS编码的二进制文件解码并恢复为其原始内容

时间:2017-07-15 20:19:40

标签: encryption file-upload cryptography cryptojs

我正在编写一个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保护文件上传。

0 个答案:

没有答案