我正在使用以下openssl函数加密数据文件
KEY="123456KEY";
IVEC="123456IVEC"
AES_set_encrypt_key(KEY, 128, &key);
AES_cfb128_encrypt(indata, outdata, bytes_read, &key, IVEC, &num, AES_ENCRYPT);
因此我加密了文件 file.tgz.enc ,我可以使用相同的 AES_cfb128_encrypt(AES_DECRYPT)函数解密此文件,但我想要解密此文件使用命令行openssl命令。我想尝试
======
COMMAND
======
/usr/bin/openssl enc -aes-128-cbc -d -in file.tgz.enc -out
new-file.tgz -K 123456KEY -iv 123456IVEC
======
OUTPUT
======
non-hex digit
invalid hex iv value
我在命令行上收到错误,例如非十六进制数字,无效的十六进制iv值,我无法解密该文件。 任何的想法 ?有人可以指导我吗?
答案 0 :(得分:1)
-K和-iv需要十六进制字符,并且您指定的输入在K
以及Y
和123456KEY
中包含非十六进制字符I
和V
123456IVEC
您需要将正确的16字节密钥传递给AES_cfb128_encrypt
,并将初始化向量传递给AES_cfb128_encrypt
但KEY只有9个字节,如果KEY(变量)的大小也是9,则可能导致未定义的行为,因为AES_set_encrypt_key
将继续从KEY读取128个字符(16个字节)
无论您在代码中使用哪个键和IV,都需要使用其十六进制表示并在openssl命令工具中使用它