【问题标题】:Which openssl command is equivalent to DES_cfb64_encrypt function?哪个 openssl 命令等效于 DES_cfb64_encrypt 函数?
【发布时间】: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


【解决方案1】:

哪个openssl命令等价于DES_cfb64_encrypt函数?

CFB mode 是参数化模式,DES_cfb64_encrypt 中的 64 将移位寄存器或段的大小设置为 64 位。命令行界面仅支持 CFB 模式的 3 种段大小,即 1 位、8 位和密码块大小的大小(DES 为 64 位)。这三种参数化模式互不兼容,不能用于解密用CFB-64加密的密文。

【讨论】:

  • 对我来说太糟糕了。有其他选择吗?
  • 编写您自己的小命令行工具应该不会花费太长时间。
  • 不应该,但我的解密努力更像是一个实验,我可以在加密/解密它的程序的 GUI 中读取文件。编写我自己的工具可能会花费太多时间来进行我什至不需要的单元测试。
猜你喜欢
  • 2012-12-03
  • 2019-09-24
  • 2016-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多