OpenSSL 0.9.8o 和 1.1.0f 之间的解密错误

OpenSSL 0.9.8o 和 1.1.0f 之间的解密错误

我使用 OpenSSL 对明文进行编码,并在多个远程服务器上对其进行解码。当我测试我的脚本以确保 Debian 9 Stretch 兼容性时,发现了一个错误。

这是我测试的方式:Debian 6,OpenSSL 0.9.8o,编码字符串:

# echo "Hi guys" | openssl des3 -salt -a -k "testkey"
U2FsdGVkX1+I3EBhXjqrm+MJOmKRpj+Y5TtNJaJjI/s=

在同一服务器上解码:

# echo "U2FsdGVkX1+I3EBhXjqrm+MJOmKRpj+Y5TtNJaJjI/s=" | openssl des3 -salt -a -d -k "testkey"
Hi guys

Debian 9,OpenSSL 1.1.0f,解码字符串:

# echo "U2FsdGVkX1+I3EBhXjqrm+MJOmKRpj+Y5TtNJaJjI/s=" | openssl des3 -salt -a -d -k "testkey"
bad decrypt
140259873273088:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:../crypto/evp/evp_enc.c:535:
z���AR�

解码正在进行中:

Debian 7,OpenSSL 1.0.1t:

$ echo "U2FsdGVkX1+I3EBhXjqrm+MJOmKRpj+Y5TtNJaJjI/s=" | openssl des3 -salt -a -d -k "testkey"
Hi guys

Debian 8,OpenSSL 1.0.1t

# echo "U2FsdGVkX1+I3EBhXjqrm+MJOmKRpj+Y5TtNJaJjI/s=" | openssl des3 -salt -a -d -k "testkey"
Hi guys

因此,我已经在 Debian 9、OpenSSL 1.1.0f 测试服务器上进行了编码测试:

# echo "Hi guys" | openssl des3 -salt -a -k "testkey"
U2FsdGVkX1+p/LDtOotR/gmVTfGL+LabNPvLxKqwbOk=

并且在同一服务器上解码正在进行:

# echo "U2FsdGVkX1+p/LDtOotR/gmVTfGL+LabNPvLxKqwbOk=" | openssl des3 -salt -a -d -k "testkey"
Hi guys

但在其他 3 台服务器上解码不起作用:Debian 6,OpenSSL 0.9.8o:

# echo "U2FsdGVkX1+p/LDtOotR/gmVTfGL+LabNPvLxKqwbOk=" | openssl des3 -salt -a -d -k "testkey"
bad decrypt
12605:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:330:
��Rv��

Debian 7,OpenSSL 1.0.1t:

$ echo "U2FsdGVkX1+p/LDtOotR/gmVTfGL+LabNPvLxKqwbOk=" | openssl des3 -salt -a -d -k "testkey"
bad decrypt
139771367589544:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:516:
▒▒Rv▒▒

Debian 8,OpenSSL 1.0.1t:

# echo "U2FsdGVkX1+p/LDtOotR/gmVTfGL+LabNPvLxKqwbOk=" | openssl des3 -salt -a -d -k "testkey"
bad decrypt
139719827605136:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:516:
▒▒Rv▒▒

我已经检查了 OpenSSL 依赖项,并在每个版本的多台服务器上进行了测试。

答案1

抱歉,几分钟后我在 Debian 错误跟踪器上找到了 Sebastian Andrzej Siewior 给出的答案:

Debian 错误报告 #843064

呸。他们将默认摘要从 md5 更改为 sha256 以创建密钥。如果您将“-md md5”添加到 1.1. openssl,那么它将起作用。相反,您需要“-md sha256”才能让 1.0 满意。

因此,通过在 Debian 9 上添加“-md md5”,它可以适用于较旧的 OpenSSL 编码字符串:

# echo "U2FsdGVkX1+I3EBhXjqrm+MJOmKRpj+Y5TtNJaJjI/s=" | openssl des3 -salt -md md5 -a -d -k "testkey"
Hi guys

并且通过在旧版 Debian 上添加“-md sha256”,较新的 OpenSSL 编码字符串也可以使用:

# echo "U2FsdGVkX1+p/LDtOotR/gmVTfGL+LabNPvLxKqwbOk=" | openssl des3 -md sha256 -salt -a -d -k "testkey"
Hi guys

保留线程以节省其他人的时间:)

相关内容