通过
为了让你快速理解对称和非对称加密,我煞费苦心...
你应该对对称加密和非对称加密有一定的理解了
我们再来思考一下如果你想要在网上发布一个你自己的文件给别人下载
你怎么能够保证
别人下载你的文件没有问题呢?
不是说你自己本身的问题
你的文件很屌,没毛病
但是有这么一种情况有可能别人下载到的文件并不是你原本发布的文件
被别人篡改了咋整?
那么我们就要用到
类似MD5这样的加密了
也就是这样
将你的文件
通过加密生成指纹
在你发布文件的时候顺便把指纹也公布了
那么别人下载你这个文件的时候
也通过和你一样的加密规则进行加密
生成出来的指纹
与你公布的指纹比对一波
如果指纹相同那就说明这个文件没有被篡改过
这就是所谓的 Hashing
也叫散列
通过散列函数加密生成的指纹是不可逆的
除非加密函数太垃圾产生“碰撞”的情况
但一般很少会出现这种情况每一个文件生成的指纹都是唯一的
生成指纹
散列不可逆
这种通过散列函数加密的算法常见的有这么几个
其实我们去下载软件的时候官方一般会提供原软件的指纹
比如这个 Tomcat就用了 pgp 和 sha512 加密的算法
所以下载下来的软件可以通过相应的算法生成指纹进行对比
就不怕被人篡改搞些病毒啥的了
在 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
这时候我们会得到指纹
可以看到和官方的一样说明这个文件没有被篡改过
好了,又有问题了
如果小帅b伪装成你发布文件给你的朋友
怎么办?如何确保对方收到的文件就是你本人发的呢?
先不跟你说下回见peace
扫一扫
学习 Python 没烦恼
点个赞啊~~(破音)