Utilizo OpenSSL para codificar texto sin cifrar y decodificarlo en varios servidores remotos. Mientras estaba probando mis scripts para asegurar la compatibilidad con Debian 9 Stretch y encontré un error.
Así es como lo pruebo: Debian 6, OpenSSL 0.9.8o, codificando una cadena:
# echo "Hi guys" | openssl des3 -salt -a -k "testkey"
U2FsdGVkX1+I3EBhXjqrm+MJOmKRpj+Y5TtNJaJjI/s=
Decodificando en el mismo servidor:
# echo "U2FsdGVkX1+I3EBhXjqrm+MJOmKRpj+Y5TtNJaJjI/s=" | openssl des3 -salt -a -d -k "testkey"
Hi guys
Debian 9, OpenSSL 1.1.0f, decodificando la cadena:
# 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�
Mientras la decodificación está trabajando en:
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
Así que probé la codificación en el servidor de prueba Debian 9, OpenSSL 1.1.0f:
# echo "Hi guys" | openssl des3 -salt -a -k "testkey"
U2FsdGVkX1+p/LDtOotR/gmVTfGL+LabNPvLxKqwbOk=
Y la decodificación en el mismo servidor está funcionando:
# echo "U2FsdGVkX1+p/LDtOotR/gmVTfGL+LabNPvLxKqwbOk=" | openssl des3 -salt -a -d -k "testkey"
Hi guys
Pero la decodificación no funciona en los otros 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▒▒
Revisé las dependencias de OpenSSL y las probé en varios servidores en cada versión.
Respuesta1
Lo siento chicos, unos minutos más tarde encontré la respuesta en el rastreador de errores de Debian de Sebastian Andrzej Siewior:
Informe de error de Debian n.º 843064
Bah. Cambiaron el resumen predeterminado de md5 a sha256 para crear la clave. Si agrega '-md md5' a su 1.1. openssl entonces funcionará. Al revés, necesitas '-md sha256' para mantener feliz a 1.0.
Entonces, al agregar "-md md5" en Debian 9, funciona en cadenas codificadas en OpenSSL más antiguas:
# echo "U2FsdGVkX1+I3EBhXjqrm+MJOmKRpj+Y5TtNJaJjI/s=" | openssl des3 -salt -md md5 -a -d -k "testkey"
Hi guys
Y al agregar "-md sha256" en Debian anterior, la cadena codificada OpenSSL más nueva también funciona:
# echo "U2FsdGVkX1+p/LDtOotR/gmVTfGL+LabNPvLxKqwbOk=" | openssl des3 -md sha256 -salt -a -d -k "testkey"
Hi guys
Manteniendo el hilo para ahorrar tiempo a otros chicos :)