从 openssl 1.0.2k 中的加密解密 openssl 1.1.1c 中的文件

从 openssl 1.0.2k 中的加密解密 openssl 1.1.1c 中的文件

我们必须找到一种方法,在使用 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 的帮助。

相关内容