W kwietniu zaszyfrowałem plik za pomocą polecenia
openssl enc -aes-256-cbc -salt -pass file:<passwordfile> < infile > outfil
Teraz chcę go odszyfrować za pomocą
openssl enc -d -aes-256-cbc -salt -pass file:<passwordfile> -in outfil -out infile2
, ale otrzymuję zły numer magiczny.
Plik zaszyfrowany wczoraj z tymi samymi parametrami odszyfrowuje ok.
Co mogło się stać? i czy mimo to mogę odzyskać ten zarchiwizowany plik?
Odpowiedź
Jeśli szyfrowano przy użyciu OpenSSL < = 1.0.2 i odszyfrowujesz za pomocą OpenSSL 1.1.0, to prawdopodobnie jest to:
https://www.openssl.org/docs/faq.html#USER3
Domyślny hash używany do generowania klucza z hasła zmienionego między 1.0.2 a 1.1.0. Spróbuj dodać -md md5
do polecenia odszyfrowywania.
Komentarze
Odpowiedź
Poniższe polecenie sprawiło mi ból:
openssl aes-256-cbc -d -in hotmama.tar.bz2.enc -out hotmama.tar.bz2 enter aes-256-cbc decryption password: bad magic number
A poniższe polecenie rozwiązało to i sprawiło mi przyjemność:
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:
Komentarze
- W drugie polecenie, nie odszyfrowujesz (
-d
) …
Odpowiedz
Ogólną przyczyną tego błędu jest to, że klucz obliczony przez OpenSSL na podstawie hasła jest nieprawidłowy, czyli nie jest taki sam jak klucz, który zaszyfrował dane.
Jednym z powodów, dla których ten błąd może się wyświetlić się, w innej sytuacji niż pierwotne pytanie, jeśli szyfrujesz za pomocą innego narzędzia niż OpenSSL, na przykład szyfrowanie w Javie i odszyfrowywanie za pomocą SSL.
Zobacz rozwiązanie dla Javy: https://stackoverflow.com/questions/22610761/aes-simple-encrypt-in-java-decrypt-with-openssl/55884564#55884564
-nosalt
lub naprawdę starożytnego OpenSSL (co najwyżej sprzed 0.9.6).