如果你怕文件被篡改,那就这样做


通过

为了让你快速理解对称和
非对称加密,我煞费苦心…

你应该对
对称加密和非对称加密
有一定的理解了


我们再来思考一下
如果你想要在网上
发布一个你自己的文件
给别人下载


你怎么能够保证
别人下载你的文件
没有问题呢?


python


不是说你自己本身的问题
你的文件很屌,没毛病


但是有这么一种情况
有可能别人下载到的文件
并不是你原本发布的文件


被别人篡改
咋整?



python


那么我们就要用到
类似 MD5 这样的加密了


也就是这样


python




将你的文件
通过加密
生成指纹

在你发布文件的时候
顺便把指纹也公布了

那么别人下载你
这个文件的时候

也通过和你一样的
加密规则进行加密

生成出来的指纹
与你公布的指纹比对一波

如果指纹相同
那就说明这个文件没有被篡改过


python


这就是所谓的 Hashin

也叫散列


通过散列函数加密生成的指纹
不可逆

除非加密函数太垃圾
产生“碰撞”的情况

但一般很少会出现这种情况
每一个文件生成的指纹
都是唯一的


python

生成指纹



python

散列不可逆



这种通过散列函数加密的
算法常见的有这么几个


python

         

其实我们去下载软件的时候
官方一般会提供原软件的指纹


比如这个 Tomcat
就用了 pgp 和 sha512 加密的算法


python


python



所以下载下来的软件
可以通过相应的算法生成指纹
进行对比

就不怕被人篡改
搞些病毒啥的了


在 python 中
有这么一个库专门来处理这些算法
就是 hashlib

比如我们在这里下载一下 tomcat 软件

下载完之后我们就使用 python 校验一下

python -c "import hashlib,sys;print(hashlib.sha512(open(sys.argv[1],'rb').read()).hexdigest())" apache-tomcat-8.5.43.zip 


这时候我们会得到指纹


python

python



可以看到和官方的一样
说明这个文件没有被篡改过


python


好了,又有问题了
如果小帅b伪装成你
发布文件给你的朋友

怎么办?
如何确保对方收到的文件
就是你本人发的呢?

先不跟你说
下回见
peace

python

扫一扫

学习 Python 没烦恼


python




      点个在看啊~~(破音)

python

原文始发于微信公众号(学习python的正确姿势):python

发表回复