I april krypterede jeg en fil ved hjælp af kommandoen
openssl enc -aes-256-cbc -salt -pass file:<passwordfile> < infile > outfil
Nu vil jeg dekryptere det med
openssl enc -d -aes-256-cbc -salt -pass file:<passwordfile> -in outfil -out infile2
men jeg får dårligt magisk nummer.
En fil krypteret i går med de samme parametre dekrypterer ok.
Hvad kunne der være sket? og er der alligevel, kan jeg hente denne arkiverede fil?
Svar
Hvis du er krypteret med OpenSSL < = 1.0.2, og du dekrypterer med OpenSSL 1.1.0, så er det sandsynligvis dette:
https://www.openssl.org/docs/faq.html#USER3
Standard-hash, der bruges til at generere nøglen fra adgangskoden ændret mellem 1.0.2 og 1.1.0. Prøv at tilføje -md md5
til din dekrypteringskommando.
Kommentarer
Svar
Kommandoen nedenfor gav mig smerte:
openssl aes-256-cbc -d -in hotmama.tar.bz2.enc -out hotmama.tar.bz2 enter aes-256-cbc decryption password: bad magic number
Og nedenstående kommando løste det og glædede mig:
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 anden kommando, du dekrypterer ikke (
-d
) …
Svar
Den generelle årsag til denne fejl er, at nøglen, der beregnes af OpenSSL fra adgangskoden, er forkert, hvilket betyder, at den ikke er den samme som nøglen, der krypterede dataene.
En af grundene til, at denne fejl kan vises op, i en anden situation end det oprindelige spørgsmål, er, om du krypterer ved hjælp af et andet værktøj end OpenSSL, for eksempel kryptering i Java, og dekryptering ved hjælp af SSL.
Se løsningen her for Java: https://stackoverflow.com/questions/22610761/aes-simple-encrypt-in-java-decrypt-with-openssl/55884564#55884564
-nosalt
eller en virkelig gammel OpenSSL (højst før 0.9.6) gør det.