``事情是这样的,是由一个加密的sql文件引发的惨案。
我被这些报错信息毒打了差不多8个小时,然后终于找到了答案,之所以写下来这篇文章,希望能帮到与我遭受同样痛苦的人。
先来看下这个文件: test.des3 里面是个sql文件
我的解密环境为:Ubuntu18
然后我使用在网上找的解密命令为:
dd if=文件名 | openssl des3 -d -k 文件的密码 | tar zxf -
然后我根据我的文件类型为des3输入了命令:
dd if=test.des3 | openssl des3 -d -k nanshou | tar zxf -
然后莫名其妙的报错了:
原谅我要再把这段话再复制一遍,为了让百度的搜索引擎能搜到,因为我在百度输入:
Using -iter or -pbkdf2 would be better的时候,啥都没有,我感到很无助。。
1、Using -iter or -pbkdf2 would be better
2、gzip:stdin:not in gzip format
3、tar :Child died with signal 13
4、tar:Error is not rocoverable:exiting now
如果你遇到了跟我一样的报错信息,恭喜你,不必像我一样浪费8个小时了。
其实问题的关键就是在于,两个 openssl版本的问题,ubuntu18默认自带openssl1.1版本,而在centos7中,则是默认自带openssl1.0版本,关键就是在这两个版本中,1.1版本的默认加密算法从MD5更改为了SHA256,有兴趣的可以看下这篇:http://www.cocoachina.com/articles/51705 。当然了,大部分我是没看懂的。
找到了问题关键后,我面临两个选择:
一、是在现有Ubuntu18中更改为openssl 1.0,然后我在网上搜了一下如何在Ubuntu中更改openssl的版本,呃。。。看了后,我就直接放弃了第一种想法。
图片出处:https://www.cnblogs.com/findumars/p/5532334.html
第二种做法就是:直接在虚拟机里再装个ubuntu14版本,版本参考见上图,这不比第一种香多了?安装好后,直接运行上述命令就OK了,当然了,如果你没有安装虚拟机和ubuntu的经验,不用担心,网上教程多得是,随便一搜就 一大把。
这是我在ubuntu14下解密的文件。
好了,基本上这个问题就这样能解决了。
不过这个问题还是 引起了我很大的反思:
1、生态真的太重要了,出了问题求助无门的感觉还是挺难的。
2、在自己看来别人的一小步很简单,可能别人付出了巨大的努力。
比如我找到了这个问题的关键是openssl版本导致的,现在看来,确实是很简单,但是在当时我的认知范围内,我花费了大量的时间精力去翻博客,绞尽脑汁去寻找答案才换来最后的成功。
呜呜呜,我以后再也不说别人论文 就这点创新啊,我早就会了,之类的蠢话了,
感谢社会,给我又上了一课,让我多了一份敬畏之心。