概述:
有時候在網上下載下傳檔案是否源檔案(官方釋出的版本)?是否被人篡改過?我們如何驗證這些完整性。這裡涉及三種校驗方法pgp 、MD5、SHA1。本質上,由源檔案采用對應算法生成一個字元串。如果源檔案改過那麼生成的字元串和官方給不一樣。這裡以Apache Ant 下載下傳的檔案為例
1、PGP(Pretty Good Private)
PGP(Pretty Good Privacy),是一個基于RSA公鑰加密體系的郵件加密軟體。可以用它對郵件保密以防止非授權者閱讀,它還能對郵件加上數字簽名進而使收信人可以确認郵件的發送者,并能确信郵件沒有被篡改。它可以提供一種安全的通訊方式,而事先并不需要任何保密的管道用來傳遞密匙。它采用了一種RSA和傳統加密的雜合算法,用于數字簽名的郵件文摘算法,加密前壓縮等,還有一個良好的人機工程設計。它的功能強大,有很快的速度。而且它的源代碼是免費的。(摘自百度百科)
需要一個PGP工具,下載下傳位址:PGP工具
下載下傳安裝,
下載下傳Apache Ant檔案 和 對應PGP檔案 ,以及KEYS(你可以了解鑰匙) 位址:Apache Ant
下載下傳完:
打開dos視窗:
gpg --import KEYS 導入鑰匙環 (表示切換到有KEYS檔案目錄下)
導入鑰匙環,就可以用下載下傳檔案.asc進行驗證了 gpg --verify apache-ant-1.10.1-bin.zip.asc
pgp遠遠不止這些功能,可以參考百度百科的pgp介紹。
2、采用md5驗證
原理:用原始檔案md5加密生成一個字元串。然後讓你
這個版本的md5生成加密字元串:
0a4530999b71f92bf17ae823ed3b0b2d
如何驗證md5字元串呢,需要工具。下載下傳位址:md5工具
下載下傳完解壓到任意磁盤目錄下
為了友善将驗證檔案放置目前目錄下
有dos指令切換到目前目錄下
你會發現,什麼也沒有輸出怎麼知道,成功沒?這時候需要自己動手寫一個md5script.bat檔案,内容如下
@echo off
md5 -c%1 %2
IF NOT errorlevel 1 GOTO valid
echo Signature not valid.
GOTO end
:valid
echo Signature valid.
:end
這個腳本意思執行過程是否異常,如果有異常就是列印簽名無效 ,反之亦然。 %1 (官方md5字元串) %2(驗證源檔案)表示占位符,等會運作這個腳本傳入的參數
3、SHA1驗證
這個和md5類似,隻是加密算法不一樣
工具位址:支援md5和SHA1驗證 (不用安裝)
點選SHA1 将字元串另存為*.sha1檔案 fsum -jf -sha1 -c apache-ant-1.10.1-bin.zip.sha1
還是沒有看出效果,要不先用-sha1加密源檔案,然後比對驗證生成字元串是否與官方給的相同
采用-sha1加密源檔案,注意檔案fsum.exe檔案位置
打開驗證檔案 apache-ant-1.10.1-bin.zip.sha1 發現一樣的。