【发布时间】:2015-12-29 15:07:13
【问题描述】:
我正在尝试使用 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 算法):
openssl enc -d -des-cfb -in data.cr -out data.decr -k 12345678
这是我得到的:
bad magic number
那么我在这里做错了什么?也许我从base64错误地转换了文件?
【问题讨论】:
-
在 2015 年看到 DES 很奇怪。请确保您对使用它有严格的工程要求,因为它通常被认为是不安全的。 (我试图避免bikeshedding)。
-
@jww 它只加密与解密应用程序位于同一台机器上的用户密码数据库。正如我过去问过的(考虑到其他项目),没有办法让它真正安全,所以算法是我最不关心的问题。每个真正投入的人都会在二进制文件中找到字符串键。
标签: encryption openssl cfb-mode