使用CryptoJS解密文件会产生随机结果

时间:2014-07-24 17:37:47

标签: javascript encryption openssl cryptojs

我有一个使用openssl加密的文件,如下所示:

openssl enc -aes-256-cbc -in /tmp/file.zip -out /tmp/file.zip.enc -pass pass:"abcdefg" -e -base64

我想使用CryptoJs解密该文件。我从FileReader对象加载文件,如下所示:

$("#inputFile").change( function( e )
{
    var files = e.target.files; // FileList object

    var file = files[0];

    var reader = new FileReader();
    reader.onload = function( e ){
        var result = e.target.result;
        var decrypted = CryptoJS.AES.decrypt(result.split(/\s/).join(''), "abcdefg");

        var string = CryptoJS.enc.Base64.stringify( decrypted );
        console.log( string.substring(0,20) );      
    };

    reader.readAsDataURL( file );
});

每次重新加载页面并加载完全相同的文件时,console.log中的输出都会发生变化。我想最终将解密文件转换为Blob并将其返回给用户,但我显然无法到达那里,直到我可以首先正确解密文件。

1 个答案:

答案 0 :(得分:0)

你应首先进行64解码,然后解密。不解密,然后基本64编码。如果您还对密文进行编码,则只需将encrypt切换为decrypt即可。