解密错误的魔术数字


12

4月,我使用以下命令对文件进行了加密

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

现在我想用

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

但是我得到了不好的魔术数字。

昨天使用相同参数加密的文件可以解密。

会发生什么事?而且无论如何我都可以检索此存档文件?

Answers:


6

如果您使用OpenSSL <= 1.0.2加密,并且正在使用OpenSSL 1.1.0解密,则可能是这样的:

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

用于从密码生成密钥的默认哈希在1.0.2和1.1.0之间更改。尝试添加-md md5到解密命令中。


1
谢谢,我担心可能是这样的事情。我们处于一种不寻常的情景中,想要恢复这种旧的东西。我会尝试一下
KathyHH,2017年

1
默认的pbe-hash不匹配(或指定了错误的hash或错误的密码)将导致垃圾解密,对于CBC模式密码(如此处),几乎总是被检测为06065064“错误解密”,但不会被检测为“坏的魔术数字”。只有损坏的文件,或-nosalt使用真正古老的OpenSSL 加密的文件(最多0.9.6之前的版本)才能这样做。
dave_thompson_085 '19

1

下面的命令让我很痛苦:

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

下面的命令解决了它,让我很高兴:

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:

6
在第二个命令中,您不解密(-d)...
dangonfast

1

导致此错误的一般原因是OpenSSL根据密码计算出的密钥是错误的,这意味着与加密数据的密钥不同。

在与原始问题不同的情况下,出现此错误的原因之一是,是否要使用OpenSSL以外的其他工具进行加密,例如,使用Java进行加密,然后使用SSL进行解密。

请参阅此处的Java解决方案:https//stackoverflow.com/questions/22610761/aes-simple-encrypt-in-java-decrypt-with-openssl/55884564#55884564

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.