我使用 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
抱歉大家,幾分鐘後我在 Sebastian Andrzej Siewior 的 Debian bug tracker 上找到了答案:
呸。他們將預設摘要從 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
保留線程以節省其他人的時間:)