плохой магический номер при расшифровке


12

В апреле я зашифровал файл с помощью команды

openssl enc -aes-256-cbc -salt -pass file:<passwordfile> < infile > outfil

Теперь я хочу расшифровать его

openssl enc -d -aes-256-cbc -salt -pass file:<passwordfile> -in outfil -out infile2

но я получаю плохой магический номер.

Файл зашифрованный вчера с теми же параметрами расшифровывает нормально.

Что могло случиться? и есть ли в любом случае я могу получить этот архив?

Ответы:


6

Если вы зашифровали с помощью OpenSSL <= 1.0.2 и расшифровывали с помощью OpenSSL 1.1.0, то, вероятно, это так:

https://www.openssl.org/docs/faq.html#USER3

Хеш по умолчанию, используемый для генерации ключа из пароля, изменился между 1.0.2 и 1.1.0. Попробуйте добавить -md md5в вашу команду расшифровки.


1
спасибо, я боялся, что это может быть что-то вроде этого. Мы находимся в необычной ситуации, желая восстановить что-то старое. Я дам этому попытку
KathyHH

1
Несоответствие в дефолтном хеше pbe (или указание неверного хэша или просто неверного пароля) приведет к дешифровке мусора, которая для шифра в режиме CBC (как здесь) будет почти всегда обнаруживаться как 06065064 «плохое дешифрование» - но не « плохой магический номер ». Это может сделать только поврежденный файл или один зашифрованный -nosaltили действительно древний OpenSSL (максимум до 0.9.6).
dave_thompson_085

1

Команда ниже причиняла мне боль:

openssl aes-256-cbc -d -in hotmama.tar.bz2.enc -out hotmama.tar.bz2
enter aes-256-cbc decryption password:
bad magic number

И приведенная ниже команда решила это и доставила мне удовольствие:

openssl aes-256-cbc -md md5 -in hotmama.tar.bz2.enc -out hotmama.tar.bz2
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:

6
Во второй команде вы не расшифровываете ( -d) ...
dangonfast

1

Основная причина этой ошибки состоит в том, что ключ, вычисленный OpenSSL из пароля, неверен, то есть не совпадает с ключом, который зашифровал данные.

Одна из причин, по которой эта ошибка может появиться в ситуации, отличной от первоначального вопроса, заключается в том, что вы шифруете с помощью другого инструмента, отличного от OpenSSL, например, шифрование в Java, и расшифровывает с помощью SSL.

См. Здесь решение для Java: /programming/22610761/aes-simple-encrypt-in-java-decrypt-with-openssl/55884564#55884564

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.