解密时的幻数错误

解密时的幻数错误

四月份我使用命令加密了一个文件

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

但我得到的魔法数字很糟糕。

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

可能发生了什么?我可以检索这个存档文件吗?

答案1

如果您使用 OpenSSL <=1.0.2 加密并使用 OpenSSL 1.1.0 解密,那么可能是这样的:

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

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

答案2

只是为了完整性:加密-A参数(执行base64编码/解码(别名-base64))并在没有它的情况下解密,给出了错误的幻数。

答案3

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

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

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

答案4

下面的命令让我很痛苦:

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:

相关内容