V dubnu jsem zašifroval soubor pomocí příkazu
openssl enc -aes-256-cbc -salt -pass file:<passwordfile> < infile > outfil
Teď to chci dešifrovat pomocí
openssl enc -d -aes-256-cbc -salt -pass file:<passwordfile> -in outfil -out infile2
, ale mám špatné magické číslo.
Včera zašifrovaný soubor se stejnými parametry dešifruje ok.
Co se mohlo stát? a je tam stejně, že mohu načíst tento archivovaný soubor?
Odpovědět
Pokud jste šifrovali pomocí OpenSSL < = 1.0.2 a dešifrujete pomocí OpenSSL 1.1.0, pak je to pravděpodobně toto:
https://www.openssl.org/docs/faq.html#USER3
Výchozí hodnota hash použitá ke generování klíče z hesla změněného mezi 1.0.2 a 1.1.0. Zkuste přidat do svého dešifrovacího příkazu -md md5
.
Komentáře
Odpověď
Následující příkaz mi způsobil bolest:
openssl aes-256-cbc -d -in hotmama.tar.bz2.enc -out hotmama.tar.bz2 enter aes-256-cbc decryption password: bad magic number
A níže uvedený příkaz to vyřešil a potěšil mě:
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:
Komentáře
- V druhý příkaz, nešifrujete (
-d
) …
odpověď
Obecnou příčinou této chyby je, že klíč vypočítaný pomocí OpenSSL z hesla je nesprávný, což znamená, že není stejný jako klíč, který šifroval data.
Jedním z důvodů, proč se tato chyba může zobrazit nahoru, v jiné situaci než původní otázka, je, pokud šifrujete pomocí jiného nástroje než OpenSSL, například šifrování v Javě a dešifrování pomocí SSL.
Viz řešení pro Javu: https://stackoverflow.com/questions/22610761/aes-simple-encrypt-in-java-decrypt-with-openssl/55884564#55884564
-nosalt
nebo skutečně starověkého OpenSSL (maximálně před 0.9.6).