7

Я использую 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 ответ1

12

Извините, ребята, через несколько минут я нашел ответ на багтрекер Debian от Себастьяна Анджея Севиора:

Отчет об ошибках Debian # 843064

бах. Они изменили дайджест по умолчанию с md5 на sha256, чтобы создать ключ. Если вы добавите '-md md5' в ваш 1.1. тогда openssl будет работать. С другой стороны вам нужен '-md sha256', чтобы поддерживать 1.0 счастливым.

Поэтому, добавив «-md md5» в Debian 9, он работает с более старой строкой в кодировке OpenSSL:

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

И добавив «-md sha256» в более старый Debian, новая строка в кодировке OpenSSL также работает:

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

Сохраняя нить, чтобы сэкономить время другим парням :)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .