常常在下載一些gnu軟件的時候,會看到軟件包ftp的地址下還會有MD5SUM,Sha1SUM這樣的文件,一直不知道有什麼做用。php
昨晚在配置vim的自動補齊功能時,遇到了一樣的問題,承蒙某大神網友指點特此記錄一下。java
爲了方便起見,本文暫時僅以md5校驗爲例。其餘的加密算法之後有機會再補充。node
1.首先文件提供方須要提供一個別人須要下載的文件a.txt, 和文件a對應的md5文件(如a.md5)。
2.文件使用方在將a.txt以及a.md5一同下載下來,進行校驗,獲得校驗結果。python
以文件plug.vim爲例
文件提供方:
1.產生對應的md5文件,並將輸出內容重定向到plug.vim.md5。git
>md5sum plug.vim > plug.vim.md5
將上面的文件上傳至github或者其餘地方供文件使用方下載github
若是有多個文件須要md5加密,就要重定向時分紅多行,每行的格式和上面的是同樣的。算法
Note:
介紹下plug.vim.md5文件的內容,個人文件內容以下:
0ec2be5d481f384253910ef8320c85fe plug.vimshell
前面一個0ec2...這一串數字是經過md5加密算法算出來的一段數字,後面plug.vim是被加密的文件名。vim
具體怎麼算的,如何校驗的之後有機會再研究和補充。網絡
文件使用方:
2.下載plug.vim和plug.vim.md5之後,進行校驗
>md5sum --check plug.vim.md5
也可使用 -c選項
若是輸出是
plug.vim: OK
即代表經過校驗。
md5 sha主要用來檢查文件的完整性。只能說是個指紋,不具備防抵賴的做用。
pgp能夠有效防抵賴,pgp能夠知道是誰發佈的這個文件,它的前提是,
使用方要相信文件提供者,一旦簽名跟發佈者的不匹配,就不要相信文件沒有被修改過。
由於md5自己你也不知道是否是最原始的md5,若是提供文件的網站被黑了。
文件被他人修改,而且他使用md5加密算法生成了新的md5,文件使用者就不知道這是否是原始的md5了。
pgp的做用主要有兩個:
一個是爲了防止下載中被篡改(好比被網絡劫持了,就有可能被篡改)
另外一個就是爲了檢查文件的完整性。
當你使用別人的github上的庫的時候,或者要改造別人代碼的時候,最好不要用master的版本。
由於master的版本是開發版本始終再變化。你能夠在tag裏面選擇一個本身要修改的版本,而後提交給別人。
或者本身寫教程用。master裏面的版本接口都是有可能改變的。
若是別人的接口改變了,而你的文檔或者代碼沒有及時跟着更新,就極可能致使你的代碼或者文檔是不可用的,這點要注意。
同一個版本的接口通常不會變,若是接口變了,就要更新大版本號。好比php5.6和php7就是大更新,python2 和 python3也是大更新,
開源軟件這種事情有不少,好比java7和java8,node8與node10。這些都是接口設計都變了的。
若是不用版本用master,老代碼怎麼辦?你又不想一個一個去改。
因此必定要用版本。