número mágico ruim ao descriptografar

Em abril, criptografei um arquivo usando o comando

openssl enc -aes-256-cbc -salt -pass file:<passwordfile> < infile > outfil 

Agora eu quero descriptografá-lo com

openssl enc -d -aes-256-cbc -salt -pass file:<passwordfile> -in outfil -out infile2 

mas recebo um número mágico ruim.

Um arquivo criptografado ontem com os mesmos parâmetros descriptografa ok.

O que poderia ter acontecido? Posso recuperar este arquivo arquivado de alguma forma?

Resposta

Se você criptografou com OpenSSL < = 1.0.2 e você está descriptografando com OpenSSL 1.1.0, então provavelmente é este:

https://www.openssl.org/docs/faq.html#USER3

O hash padrão usado para gerar a chave da senha alterada entre 1.0.2 e 1.1.0. Tente adicionar -md md5 ao seu comando de descriptografia.

Comentários

  • obrigado, estava com medo assim Estamos em uma situação incomum querendo restaurar algo tão antigo. Vou tentar
  • Uma incompatibilidade no pbe-hash padrão (ou especificando o hash errado ou apenas a senha errada) causará uma descriptografia de lixo que para uma cifra de modo CBC (como aqui) quase sempre ser detectado como 06065064 ' descriptografia incorreta ' – mas não ' número mágico ruim '. Apenas um arquivo danificado ou criptografado com -nosalt ou um OpenSSL realmente antigo (antes de 0.9.6 no máximo) faz isso.

Resposta

O comando abaixo me incomodou:

openssl aes-256-cbc -d -in hotmama.tar.bz2.enc -out hotmama.tar.bz2 enter aes-256-cbc decryption password: bad magic number 

E o comando abaixo resolveu e me deu prazer:

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: 

Comentários

  • No segundo comando, você não está descriptografando (-d) …

Resposta

A causa geral desse erro é que a chave calculada pelo OpenSSL a partir da senha está errada, o que significa que não é a mesma que a chave que criptografou os dados.

Um motivo pelo qual esse erro pode ser mostrado em uma situação diferente da pergunta original, é se você está criptografando usando outra ferramenta que não OpenSSL, por exemplo, criptografar em Java e descriptografar usando SSL.

Veja a solução aqui para Java: https://stackoverflow.com/questions/22610761/aes-simple-encrypt-in-java-decrypt-with-openssl/55884564#55884564

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *