首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Bash - OpenSSL解密在文件从十六进制转换后返回“坏魔术号”错误。

Bash - OpenSSL解密在文件从十六进制转换后返回“坏魔术号”错误。
EN

Stack Overflow用户
提问于 2022-03-04 00:53:45
回答 1查看 308关注 0票数 0

我有一个十六进制格式的文件,我试图用OpenSSL解密。但是,在将文件从十六进制转换回二进制之后,在输入正确的密码之后,我将收到一个bad magic number错误。我在Debian上使用bash。

我尝试用一个简单的文件再现错误,下面是我所采取的步骤:

将文本写入文件:hello world

使用密码1234

  1. 加密文件:openssl enc -aes-256-cbc -md sha512 -pbkdf2 -iter 100000 -salt -in test.txt -out test.data

删除原始文件:rm test.txt

1234

  1. 用OpenSSL解密test.data:使用密码OpenSSL解密openssl enc -d -aes-256-cbc -md sha512 -pbkdf2 -iter 100000 -salt -in test.data -out test.txt

  1. 确认上述工作正常(这里没有问题)

  1. test.data转换为十六进制:cat test.data | hexdump -C | tee test.hex

(这是我的原始文件是如何转换的,所以这就是我现在的数据格式)

xxd -r -p test.hex test.data.copy

  1. test.hex转换回二进制

  1. 尝试用密码1234解密test.data.copyopenssl enc -d -aes-256-cbc -md sha512 -pbkdf2 -iter 100000 -salt -in test.data.copy -out test.txt。在这里,我接收到bad magic number错误,并看到解密的文件是空白的

编辑:多亏了@Barmar,我发现这些文件是不同的。因此,在使用cat输出二进制文件时出现了错误。知道了这一点,还有没有办法恢复原始文件?

我哪里出问题了?有没有在我不知道的过程中插入了一些额外的字节?由于我只有十六进制文件,而没有原始文件,我应该做什么来确保它被正确解密?谢谢

EN

回答 1

Stack Overflow用户

发布于 2022-03-04 20:45:20

感谢@GordonDavisson向我展示了使用hexdump -C的问题。

正如他在评论中提到的,使用hexdump -C会向文件中添加一堆额外的数据,xxd -r -p将这些数据包含在结果输出文件中。

我只需删除每行开头的行号和末尾的ASCII表示。然后,我删除了新行和双白空间,以获得一个普通的十六进制文件。在获得普通十六进制之后,我能够使用相同的xxd -r -p命令转换为二进制文件,并成功地使用openssl解密。

谢谢你的帮助,否则我就不知道了

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71345475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档