尝试在OpenSSL中解密文件时出现Bad Magic Number错误

siv*_*iva 10 openssl

我正在使用最新版本的OpenSSL for Windows,我正在尝试解密U2FsdGVkX18ztmw81FTK/c+jAf8xtcZdIpesuV2PLDM=使用DES加密的邮件(密码是:) pass,我正在使用以下命令

des -d -in Encrypted.txt -out normal.txt
Run Code Online (Sandbox Code Playgroud)

输入密码后我得到了错误的幻数错误:传递

Encrypted.txt包含加密消息U2FsdGVkX18ztmw81FTK/c+jAf8xtcZdIpesuV2PLDM= ,normal.txt为空

我搜索了堆栈溢出的所有帖子,发现没有可以解决我的问题的文章,请帮助解决这个问题.

Kar*_*hik 8

des命令的输入不应该在base64中.相反,您需要首先解码base64输出,然后将其提供给OpenSSL des命令.例如,当我在Linux上运行以下代码时:

echo U2FsdGVkX18ztmw81FTK/c+jAf8xtcZdIpesuV2PLDM= | openssl enc -base64 -d | openssl des -d

我得到了正确的输出:

hello world

由于Windows不适合管道,因此必须将输出重定向到中间文件,然后运行单个openssl命令.

  • 不,base64只是表示不可打印字符的便捷方式.如果加密的消息是base64格式,则必须在解密之前对其进行解码.事实上,openssl的`des`命令有一个内置的base64编码/解码选项(`-a`).所以,你需要做的就是`openssl des -d -a -in Encrypted.txt -out normal.txt` (2认同)