『壹』 linux系統中校驗下載文件的完整性方法MD5SHA1PGP
Linux下的學習開始總是艱難的,但有的時候,卻發現Linux下遠比Windows的操作來的實在的多——這下載文件的完整性就是其中一件,讓本人覺著很爽的一件事情。在編譯安裝各種軟體的時候,總要到各個網站上收集下軟體源碼包。正由於此,軟體的入口就非常復雜,校驗下載的文件是否被修改過就顯得非常有必要了。而校驗方法當前一般是MD5,SHA1,PGP三種。在Windows那個漫長的歲月里(滄桑有木有),一般只能接觸到前兩種——前提是你會去校驗的話。
MD5校驗
原理:對文件進行MD5 Hash,求出文件的MD5哈希值,通過下載後文件MD5哈希值和發布者提供的MD5哈希值是否一致來判斷文件是否在發布者發布之後被篡改過。
說明:壽命老長的一個Hash演算法,適用范圍廣,網站存儲密碼也經常使用。不同的文件產生的MD5哈希值是唯一的,但這點已經有辦法通過對文件進行少量的修改,讓文件的MD5後的哈希值保持一致。
使用:在CentOS下,要對文件進行MD5 Hash是很簡單的,一個 md5sum 命令即可:
#將MD5 Hash值保存到md5-hash.txt文件中.
$ md5sum your-downloaded-file-name > md5-hash.txt
# 顯示輸出的md5-hast.txt內容
$ cat md5-hash.txt
your-downloaded-file-name
# 通過md5-hash.txt來校驗你下載的文件是否正確
$ md5sum -c md5-hash.txt
your-downloaded-file-name: OK
你是文件的發布者話,你可以通過md5sum把文件的哈希值發送給驗證者,這樣下載你文件的人就可以通過MD5哈希值來驗證你的文件正確性。反過來,我們在網站上下載文件之後,同時可以獲取發布者的MD5哈希值和本地生成的Hash值對比,如果一致,認為文件是正確的。
SHA1校驗
原理: 原理同MD5一樣,都是通過對文件進行HASH求值,比對文件發布者發布的HASH值,通過是否相等判斷文件是否被篡改
說明: SHA1 HASH求值方法可以說是MD5的一個升級版本(SHA1 20位,MD5 16位),在HASH求值方面,MD5退出的舞台將有SHA1占據。SHA家族有五個演算法:SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512,後四種有時候稱為SHA2
使用: CentOS有SHA1的命令: sha1sum
# 將SHA1 Hash值保存到文件中
$ sha1sum your-downloaded-file-name > sha1-hash.txt
# 顯示文件內容
$ cat sha1-hash.txt
your-downloaded-file-name
#通過sha1-hash.txt來校驗我們下載的文件your-downloaded-file-name
# 注意,文件必須要要通過txt文件中的路徑知道哦
$ sha1sum -c sha1-hash.txt
your-downloaded-file-name: OK
這個SHA1和MD5基本一致,需要補充說明下的是,在使用 md5sum 也好,還是 sha1sum 也罷,校驗文件的時候,務必要讓系統能夠根據文件中提供的路徑找到文件,如果文件找不到,是沒有辦法進行校驗的。
如果是做多個文件的Hash校驗,可以通過一個文件保存多個文件的Hash值即可。
PGP校驗
原理:使用非對稱加密,程序生成唯一的密鑰對(公鑰和私鑰:Public Key和Private Key/Secret Key)。操作方法如下:
1.發布者通過用生成的密鑰對中的私鑰對要發布的文件進行簽名,得到簽名文件(sign);
2.發布者將密鑰對中的公鑰發布到公鑰伺服器;
3.發布者將文件和用私鑰生成的簽名一起發布;
4.驗證者下載發布者發布的文件和簽名;
5.使用PGP的程序獲取的發布者第二步發布的公鑰;
6.使用公鑰校驗文件簽名
說明:簽名演算法中,密鑰的用處分別是:公鑰用於加密信息和驗證,私鑰用於解密和簽名。私鑰掌握在信息發布方,公鑰可以任意分發。信息發布方用密鑰進行對信息進行簽名,接收方在獲取公鑰後,可以用公鑰對發布方發布的信息+簽名進行驗證。如果驗證失敗則認為信息被篡改。在網路中,我們經常碰到的HTTPS協議,使用了同樣的機制。
使用:由於PGP是商業應用程序,在CentOS/Linux中,具有同類功能的是GPG(也就是:GnuPG),同樣遵守OpenPGP數據加密標准( RFC 4880 ),沒有安裝可以用 yum install gnupg 安裝,命令是: gpg
復制代碼代碼如下:這里有多種情況,如果你只有簽名,但生成簽名的文件不存在時(系統沒找到,一般應該放在同目錄下面),返回的是:
復制代碼代碼如下:當你有文件的時候,但還沒有與簽名對應的公鑰時,gpg返回的信息類似下面:
復制代碼代碼如下:注意:上面的信息在不同的文件和操作系統上生成的信息是不同的。但在沒有公鑰的時候,你可以發現gpg提供了一個該簽名對應的鑰匙號:47ACDAFB,這個是我們需要找的公鑰。
上面已經說過,發布者已經將公鑰發布到公鑰伺服器中,供驗證者下載,因此我們需要到公鑰伺服器中下載公鑰,要下載公鑰,鑰匙號就很重要了。
可用的公鑰伺服器可以通過wikipedia 上的Key Server條目來查看常用的一些key伺服器列表。這里使用hkp://pgp.mit.e:
復制代碼代碼如下:--recv-keys要與--keyserver配合使用,導入密鑰對的公鑰之後,我們就能夠使用這個公鑰來驗證我們的簽名了。
再次運行我們之前的驗證命令(gpg --verify sign-file),就可以看到驗證的結果了。
復制代碼代碼如下:看到這個結果,至少確認一個結果:這個文件是沒有被篡改過的。
一般我們到這步也就差不多了。
但注意消息裡面有個警告,說明這個是未受信任的簽名認證。因為這個公鑰誰都可以發布上去的,如果你確實需要進一步認證,可以在簽名認證之前,你能還要聯系下真正的發布者,確認這個密鑰的信息——指紋!這個是這個演算法的一個弱點。
如果簽名認證已經通過,你也就可以安心的在自己的系統內編譯,安裝它了。
關於PGP的更多信息,可以參考以下網站:
『貳』 Linux中檢查文件系統完整性的命令
那要看你的文件系統是什麼格式的了,假設你的文件系統是ext3(假如不是ext3那就把下面的ext3換成別的),假設你要檢查的分區是/dev/sda1, 那命令就是:
fsck -t ext3 /dev/sda1 -r
這樣它會檢查文件系統完整性,如果有什麼問題,它會提示問你要不要修復的,如果你懶得理它,想讓它自己修復,那就在末尾加上-y參數。
你為什麼不man fsck自己看一下它的說明呢?
『叄』 linux下md5sum的使用
Linux下md5sum的使用
一、明確答案
在Linux系統中,md5sum命令用於計算和校驗文件的MD5哈希值。它可以確保文件的完整性和安全性。
二、詳細解釋
1. md5sum命令的基本功能:md5sum是一種常用的文件哈希工具,它通過對文件內容計算出一個唯一的MD5哈希值。這個值可以用來驗證文件的完整性,因為如果文件在傳輸或存儲過程中發生任何微小的變化,其MD5值也會發生變化。
2. 使用方式:在終端中輸入“md5sum 文件名”即可計算指定文件的MD5值。例如:“md5sum test.txt”將會計算名為test.txt的文件的MD5哈希值並顯示在終端上。
3. 校驗文件完整性:除了計算MD5值,md5sum還可以用於校驗已存在的MD5值是否與文件匹配。這通常用於驗證下載的文件是否完整,或者確認文件在傳輸過程中沒有被篡改。通過將已知的MD5值與通過md5sum計算得到的值進行對比,可以判斷文件的完整性。
4. 注意事項:雖然MD5哈希演算法被廣泛使用,但由於其已知的安全漏洞,對於需要高度安全性的場合,建議使用更安全的哈希演算法,如SHA-256或SHA-3等。但在一般的文件校驗場景中,MD5仍然是一個有效和常用的工具。
三、總結
Linux下的md5sum是一個實用工具,用於計算和校驗文件的MD5哈希值,確保文件的完整性和安全性。使用時只需在終端輸入相關命令即可輕松計算文件的MD5值,也可以用來驗證文件的完整性。但需要注意,對於需要更高安全性的場景,應考慮使用更安全的哈希演算法。