Crypto-js解密使用crypto加密的文件

时间:2020-07-29 10:29:56

标签: javascript node.js encryption cryptography

我在node.js服务器上使用crypto对文件进行加密。当客户端随后下载文件并尝试使用crypto-js对其解密时,输出不正确。

这是我用来加密的代码:

var fileName = 'test.txt';
var key = Buffer.from(KEY_STRING, "utf8");
var iv = Buffer.from(IV_STRING, "utf8");
var cipher = crypto.createCipheriv('aes-256-cbc', key, iv);
var input = fs.createReadStream(fileName);
var output = fs.createWriteStream(fileName + '.enc');

input.pipe(cipher).pipe(output);

客户端下载test.txt.enc,将其内容读入字符串(以下代码中的fileContent)并解密:

var decrypted = CryptoJS.AES.decrypt(
    fileContent,
    CryptoJS.enc.Utf8.parse(KEY_STRING),
    {
        iv: CryptoJS.enc.Utf8.parse(IV_STRING),
        mode: CryptoJS.mode.CBC
    }
);

var cleartext = CryptoJS.enc.Utf8.stringify(decrypted);

当客户端将WordArray转换回utf-8文本时,它将收到“错误:UTF-8数据格式错误”消息。文件正确接收,因为我使用哈希检查。

编辑:填充fileContent

fs.readFile('test.txt.enc', readContent); 
function readContent (err, data) { 
    err ? Function("error","throw error")(err) : fileContent = data.toString(); 
}; 

0 个答案:

没有答案
相关问题