我有一个文件内容需要解码。

原始数据采用utf8格式并进行了加密,并且作为此过程的一部分,以hex格式存储在文件中,每个unicode字符2个十六进制字符(基数为16个数字字节)。

使用类似于以下内容的node.js代码生成此数据:

const crypto = require('crypto');
const algorithm = 'AES-256-CBC';

const encrypt = async (value, password, iv) {
    const cipher = crypto.createCipheriv(algorithm, password, iv);
    let encrypted = cipher.update(value, 'utf8', 'hex')
    encrypted += cipher.final('hex');
    return encrypted;
}


我想要一些linux bash脚本(不是node.js代码),该脚本实际上会将源文件转换为utf8编码的文件。

有一个简单的方法吗?

我一直在寻找iconv之类的工具,但一直在寻找答案。

一旦文件内容被解码,我就可以使用openssl进行解密。

最佳答案

不清楚什么是“源文件”。如果您的意思是十六进制编码的加密数据,则不能转换为UTF-8。

加密的数据是8位二进制,看起来是随机位/字节。 UTF-8中不能表示任意二进制数据,并非所有二进制值都是合法的UTF-8字符。

相反,您需要做的是将十六进制转换为二进制并将该二进制传递给解密方法。

10-01 01:21
查看更多