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

Decrypting a file using CryptoJS produces random results

本文关键字:随机 结果 CryptoJS 解密 文件 使用      更新时间:2023-09-26

我有一个使用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并将其返回给用户,但显然,在我能够首先正确解密文件之前,我无法实现这一目标。

您应该先进行64进制解码,然后再解密。不解密,则base64编码。如果您还对密文进行了编码,则仅将encrypt切换为decrypt将无法做到这一点。