În aprilie am criptat un fișier folosind comanda
openssl enc -aes-256-cbc -salt -pass file:<passwordfile> < infile > outfil
Acum vreau să îl decriptez cu
openssl enc -d -aes-256-cbc -salt -pass file:<passwordfile> -in outfil -out infile2
dar primesc un număr magic prost.
Un fișier criptat ieri cu aceiași parametri decriptează ok.
Ce s-ar fi putut întâmpla? și există oricum că pot recupera acest fișier arhivat?
Răspuns
Dacă ați criptat cu OpenSSL < = 1.0.2 și decriptați cu OpenSSL 1.1.0 atunci este probabil aceasta:
https://www.openssl.org/docs/faq.html#USER3
Hash-ul implicit utilizat pentru a genera cheia din parola modificată între 1.0.2 și 1.1.0. Încercați să adăugați -md md5
la comanda dvs. de decriptare.
Comentarii
Răspuns
Comanda de mai jos mi-a dat durere:
openssl aes-256-cbc -d -in hotmama.tar.bz2.enc -out hotmama.tar.bz2 enter aes-256-cbc decryption password: bad magic number
Și comanda de mai jos a rezolvat-o și mi-a dat plăcere:
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:
Comentarii
- În a doua comandă, nu decriptați (
-d
) …
Răspundeți
Cauza generală a acestei erori este că cheia calculată de OpenSSL din parolă este greșită, ceea ce înseamnă că nu este aceeași cu cheia care a criptat datele.
Un motiv pentru care această eroare poate apărea sus, într-o situație diferită de întrebarea inițială, este dacă criptați utilizând un alt instrument decât OpenSSL, de exemplu criptarea în Java și decriptarea folosind SSL.
Consultați soluția aici pentru Java: https://stackoverflow.com/questions/22610761/aes-simple-encrypt-in-java-decrypt-with-openssl/55884564#55884564
-nosalt
sau un într-adevăr vechi OpenSSL (înainte de cel mult 0.9.6) face asta.