我们必须找到一种方法,在使用 openssl 版本 1.1.1c 的升级服务器中解密使用 openssl 版本 1.0.2k 的旧服务器生成的文件。我们有几台运行的服务器仍在使用版本 1.0.2k,所以我们不能将所有服务器都升级到新版本。所有这些都发生在我们将新服务器上的软件从旧版 centos 7 更新到 centos 8 期间。Centos 8 使用 1.1.1c,而 centos 7 使用 1.0.2k。
在1.0.2k版本中用于加密的命令是:
tar -cz files.tar.gz | openssl enc -aes-256-cbc -e > secured.tar.gz.enc
在 1.1.1c 版本中我尝试过解密文件:
openssl enc -d -aes-256-cbc -md md5 -pbkdf2 -iter 1000000 -in secured.tar.gz.enc > test.tar.gz
我收到错误:
bad decrypt
<numbers....>:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad
decrypt:crypto/evp/evp_enc.c:603:
从信息来看这里它指出错误可能是由于版本 1.0.2k 默认使用 md5 而版本 1.1.1c 使用 sha256。因此使用-md md5
。
如果我不使用,-pbkdf2 -iter 1000000
我会收到错误:
*** WARNING : deprecated key derivation used.
Using -iter or -pbkdf2 would be better.
我再次检查了密码,它是正确的。不知道还有什么问题。
答案1
事实证明,解决方案是删除该-pbkdf2 -iter 1000000
选项。这只会导致出现警告消息:
*** WARNING : deprecated key derivation used.
Using -iter or -pbkdf2 would be better.
但最终不是必需的。只有当加密也包含此选项时才需要。所以最终的解决方案是:
openssl enc -d -aes-256-cbc -md md5 -in secured.tar.gz.enc > test.tar.gz
感谢@Ramhound 的帮助。