我最近将我的电脑更新为 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