爲了讓你快速理解對稱和非對稱加密,我煞費苦心...
你應該對對稱加密和非對稱加密有一定的理解了
我們再來思考一下如果你想要在網上發佈一個你自己的文件給別人下載
你怎麼能夠保證
別人下載你的文件沒有問題呢?
不是說你自己本身的問題
你的文件很屌,沒毛病
但是有這麼一種情況有可能別人下載到的文件並不是你原本發佈的文件
被別人篡改了咋整?
那麼我們就要用到
類似 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僞裝成你發佈文件給你的朋友
怎麼辦?如何確保對方收到的文件就是你本人發的呢?
先不跟你說下回見