I april krypterade jag en fil med kommandot
openssl enc -aes-256-cbc -salt -pass file:<passwordfile> < infile > outfil
Nu vill jag dekryptera det med
openssl enc -d -aes-256-cbc -salt -pass file:<passwordfile> -in outfil -out infile2
men jag får dåligt magiskt nummer.
En fil krypterad igår med samma parametrar dekrypterar ok.
Vad kunde ha hänt? och finns det ändå kan jag hämta den arkiverade filen?
Svar
Om du krypteras med OpenSSL < = 1.0.2 och du dekrypterar med OpenSSL 1.1.0 så är det antagligen detta:
https://www.openssl.org/docs/faq.html#USER3
Standard hash som används för att generera nyckeln från lösenordet ändrat mellan 1.0.2 och 1.1.0. Försök att lägga till -md md5
i ditt dekrypteringskommando.
Kommentarer
Svar
Kommandot nedan gav mig smärta:
openssl aes-256-cbc -d -in hotmama.tar.bz2.enc -out hotmama.tar.bz2 enter aes-256-cbc decryption password: bad magic number
Och kommandot nedan löste det och gav mig glädje:
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:
Kommentarer
- I andra kommandot, du dekrypterar inte (
-d
) …
Svar
Den allmänna orsaken till detta fel är att nyckeln som beräknas av OpenSSL från lösenordet är fel, vilket betyder att den inte är densamma som nyckeln som krypterade data.
En anledning när detta fel kan upp, i en annan situation än den ursprungliga frågan, är om du krypterar med ett annat verktyg än OpenSSL, till exempel kryptering i Java och dekryptering med SSL.
Se lösning här för Java: https://stackoverflow.com/questions/22610761/aes-simple-encrypt-in-java-decrypt-with-openssl/55884564#55884564
-nosalt
eller en riktigt forntida OpenSSL (högst före 0.9.6) gör det.