我正在尝试使用OpenSSL解密以编程方式加密的文件。 OpenSSL用于加密文件,我知道使用的函数和密钥:
//This declaration is just figurative
const char keybuf = "12345678";
// Prepare the key for use with DES_cfb64_encrypt
DES_cblock key2;
DES_key_schedule schedule;
// keybuf is the string key used as password
memcpy(key2, keybuf, 8);
DES_set_odd_parity(&key2);
DES_set_key_checked(&key2, &schedule);
int n = 0;
DES_cfb64_encrypt( ..., ..., length, &schedule, &key2, &n, DES_ENCRYPT );
首先我将文件从base64转换为二进制文件(这是它的打包方式):
cat data.b64 | base64 --decode > data.cr
现在我在加密数据上运行命令行(假设我需要des-cfb是algorighm):
openssl enc -d -des-cfb -in data.cr -out data.decr -k 12345678
这就是我得到的:
bad magic number
那么我在这里做错了什么?也许我从base64错误地转换了文件?
答案 0 :(得分:1)
哪个openssl命令等同于DES_cfb64_encrypt函数?
<强>无强>
CFB mode是参数化模式,DES_cfb64_encrypt
中的64将移位寄存器或段的大小设置为64位。命令行接口仅支持CFB模式的3个段大小,它们是1位,8位和密码块大小(DES为64位)。这三种参数化模式彼此不兼容,它们不能用于解密用CFB-64加密的密文。