四月份我使用命令加密了一个文件
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: