加密文件的 Openssl 解码不再起作用

加密文件的 Openssl 解码不再起作用

我最近将我的电脑更新为 64 位 Debian 测试版。从那时起,在 32 位 Debian 上使用 openssl 加密的文件解密就不再有效了。

我曾经像这样加密文件:

$ openssl des3 -in bla.txt -out bla.txt.des3

并像这样解密:

$ openssl des3 -d -in bla.txt.des3 -out bla.txt

如果我 chroot 到旧的 32 位 Debian 测试安装的备份,这仍然有效。在 64 位安装中,我收到以下错误:

$ openssl des3 -d -in bla.txt.des3 -out bla.txt
enter des-ede3-cbc decryption password:
bad decrypt
140219224302720:error:06065064:digital envelope outines:EVP_DecryptFinal_ex:bad decrypt:crypto/evp/evp_enc.c:529:

openssl在 64 位 Debian 测试系统上调用解码文件的正确方法是什么?

编辑版本信息:

旧版(chroot 中为 32 位):

$ openssl version
OpenSSL 1.0.2j  26 Sep 2016
$ dpkg -l | grep ssl
ii  libssl1.0.2:i386                                            1.0.2j-1                             i386         Secure Sockets Layer toolkit - shared libraries
ii  openssl                                                     1.0.2j-1                             i386         Secure Sockets Layer toolkit - cryptographic utility
ii  ssl-cert                                                    1.0.38                               all          simple debconf wrapper for OpenSSL
$ ldd /usr/bin/openssl
  linux-gate.so.1 (0xf7729000)
  libssl.so.1.0.2 => /usr/lib/i386-linux-gnu/libssl.so.1.0.2 (0xf769c000)
  libcrypto.so.1.0.2 => /usr/lib/i386-linux-gnu/libcrypto.so.1.0.2 (0xf7498000)
  libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf7493000)
  libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf72dc000)
  /lib/ld-linux.so.2 (0x5663b000)

新的(64位):

$ openssl version
OpenSSL 1.1.0c  10 Nov 2016
$ dpkg -l | grep ssl
ii  libssl1.0.2:amd64                                           1.0.2j-4                          amd64        Secure Sockets Layer toolkit - shared libraries
ii  libssl1.1:amd64                                             1.1.0c-2                          amd64        Secure Sockets Layer toolkit - shared libraries
ii  openssl                                                     1.1.0c-2                          amd64        Secure Sockets Layer toolkit - cryptographic utility
ii  ssl-cert                                                    1.0.38                            all          simple debconf wrapper for OpenSSL
$ ldd /usr/bin/openssl 
linux-vdso.so.1 (0x00007ffe63c76000)
libssl.so.1.1 => /usr/lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007f9b74487000)
libcrypto.so.1.1 => /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007f9b73ff6000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9b73df2000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f9b73bd5000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9b73837000)
/lib64/ld-linux-x86-64.so.2 (0x000055a182164000)

答案1

这是因为在 OpenSSL 1.1.0 中,消息摘要的默认值已从 md5 更改为 sha-256。如果您明确说明,仍然可以使用旧摘要解密内容:

openssl des3 -d -in bla.txt.des3 -out bla.txt -md md5

相关内容