Eu uso OpenSSL para codificar texto não criptografado e decodificá-lo em vários servidores remotos. Enquanto eu estava testando meus scripts para garantir a compatibilidade do Debian 9 Stretch e encontrei um erro.
Aqui está como eu testo: Debian 6, OpenSSL 0.9.8o, codificando uma string:
# echo "Hi guys" | openssl des3 -salt -a -k "testkey"
U2FsdGVkX1+I3EBhXjqrm+MJOmKRpj+Y5TtNJaJjI/s=
Decodificação no mesmo servidor:
# echo "U2FsdGVkX1+I3EBhXjqrm+MJOmKRpj+Y5TtNJaJjI/s=" | openssl des3 -salt -a -d -k "testkey"
Hi guys
Debian 9, OpenSSL 1.1.0f, decodificando a string:
# 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�
Enquanto a decodificação está funcionando:
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
Então testei a codificação no servidor de teste Debian 9, OpenSSL 1.1.0f:
# echo "Hi guys" | openssl des3 -salt -a -k "testkey"
U2FsdGVkX1+p/LDtOotR/gmVTfGL+LabNPvLxKqwbOk=
E a decodificação no mesmo servidor está funcionando:
# echo "U2FsdGVkX1+p/LDtOotR/gmVTfGL+LabNPvLxKqwbOk=" | openssl des3 -salt -a -d -k "testkey"
Hi guys
Mas a decodificação não está funcionando nos outros 3 servidores: 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▒▒
Verifiquei as dependências do OpenSSL e testei em vários servidores em cada versão.
Responder1
Desculpe pessoal, alguns minutos depois encontrei a resposta no rastreador de bugs do Debian por Sebastian Andrzej Siewior:
Relatório de bug do Debian #843064
bah. Eles alteraram o resumo padrão de md5 para sha256 para criar a chave. Se você adicionar '-md md5' ao seu arquivo 1.1. openssl então funcionará. O contrário, você precisa de '-md sha256' para manter o 1.0 feliz.
Então, adicionando "-md md5" no Debian 9, ele funciona em strings codificadas OpenSSL mais antigas:
# echo "U2FsdGVkX1+I3EBhXjqrm+MJOmKRpj+Y5TtNJaJjI/s=" | openssl des3 -salt -md md5 -a -d -k "testkey"
Hi guys
E adicionando "-md sha256" no Debian mais antigo, a string codificada OpenSSL mais recente também funciona:
# echo "U2FsdGVkX1+p/LDtOotR/gmVTfGL+LabNPvLxKqwbOk=" | openssl des3 -md sha256 -salt -a -d -k "testkey"
Hi guys
Mantendo o tópico para economizar tempo para outros caras :)