``事情是这样的,是由一个加密的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 -

然后莫名其妙的报错了:

openssl des_ubuntu


原谅我要再把这段话再复制一遍,为了让百度的搜索引擎能搜到,因为我在百度输入:

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的版本,呃。。。看了后,我就直接放弃了第一种想法。

openssl des_openssl des_02


图片出处:

第二种做法就是:直接在虚拟机里再装个ubuntu14版本,版本参考见上图,这不比第一种香多了?安装好后,直接运行上述命令就OK了,当然了,如果你没有安装虚拟机和ubuntu的经验,不用担心,网上教程多得是,随便一搜就 一大把。

这是我在ubuntu14下解密的文件。

openssl des_报错信息_03


好了,基本上这个问题就这样能解决了。

不过这个问题还是 引起了我很大的反思:

1、生态真的太重要了,出了问题求助无门的感觉还是挺难的。

2、在自己看来别人的一小步很简单,可能别人付出了巨大的努力。

比如我找到了这个问题的关键是openssl版本导致的,现在看来,确实是很简单,但是在当时我的认知范围内,我花费了大量的时间精力去翻博客,绞尽脑汁去寻找答案才换来最后的成功。

呜呜呜,我以后再也不说别人论文 就这点创新啊,我早就会了,之类的蠢话了,

感谢社会,给我又上了一课,让我多了一份敬畏之心。