md5sum 和 sha256sum用於 驗證軟體完整性

xuyaowen發表於2018-07-26

md5sum 和 sha256sum 都用來用來校驗軟體安裝包的完整性,本次我們將講解如何使用兩個命令進行軟體安裝包的校驗:

sha 是什麼? 

      sha 為 安全雜湊演算法(英語:Secure Hash Algorithm,縮寫為SHA)是一個密碼雜湊函式家族,是FIPS所認證的安全雜湊演算法。能計算出一個數字訊息所對應到的,長度固定的字串(又稱訊息摘要)的演算法。且若輸入的訊息不同,它們對應到不同字串的機率很高。

 

     SHA家族的五個演算法,分別是SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512,由美國國家安全域性(NSA)所設計,並由美國國家標準與技術研究院(NIST)釋出;是美國的政府標準。後四者有時並稱為SHA-2。SHA-1在許多安全協定中廣為使用,包括TLS和SSL、PGP、SSH、S/MIME和IPsec,曾被視為是MD5(更早之前被廣為使用的雜湊函式)的後繼者。

md5 是什麼?

     md5 為 訊息摘要演算法(英語:MD5 Message-Digest Algorithm),一種被廣泛使用的密碼雜湊函式,可以產生出一個128位(16位元組)的雜湊值(hash value),用於確保資訊傳輸完整一致。MD5由美國密碼學家羅納德·李維斯特(Ronald Linn Rivest)設計,於1992年公開,用以取代MD4演算法。

關於兩者之間有什麼不同,請參考博文:https://www.cnblogs.com/xuyaowen/p/md5sum_and_sha256sum.html

md5sum 命令使用:

SYNOPSIS
       md5sum [OPTION]... [FILE]...
MD5SUM(1)                                                                            User Commands                                                                           MD5SUM(1)

NAME
       md5sum - compute and check MD5 message digest

SYNOPSIS
       md5sum [OPTION]... [FILE]...

DESCRIPTION
       Print or check MD5 (128-bit) checksums.

       With no FILE, or when FILE is -, read standard input.

       -b, --binary
              read in binary mode

       -c, --check
              read MD5 sums from the FILEs and check them

使用舉例:

當前所有的檔案:

diff ls
hello.c  hello_new.c  hello_test.c  hi.patchdiff pwd 
/home/xuyaowen/Desktop/workplace/diff

使用 md5sum 命令,進行生成md5串:

diff md5sum * | tee hi.md5
1e21e6bf97bf1e7a7ec9be72f3b068a0  hello.c
1e21e6bf97bf1e7a7ec9be72f3b068a0  hello_new.c
a6e14a356b8a2ad9c99e606e73143aaf  hello_test.c
f11ca2f605a3ab177f4101103c64c658  hi.patchdiff cat hi.md5 
1e21e6bf97bf1e7a7ec9be72f3b068a0  hello.c
1e21e6bf97bf1e7a7ec9be72f3b068a0  hello_new.c
a6e14a356b8a2ad9c99e606e73143aaf  hello_test.c
f11ca2f605a3ab177f4101103c64c658  hi.patchdiff 

使用md5命令選項 -c 和 md5 檔案 進行校驗:

diff md5sum -c hi.md5 
hello.c: OK
hello_new.c: OK
hello_test.c: OK
hi.patch: OK
➜  diff 

通過 顯示 ,可以發現每個檔案校驗成功。

如果我們進行修改了其中的某個檔案:

diff cat hello.c 
#include "stdio.h"
int main(int argc ,char **argv)
{
    printf("Hello World
");
    return 0;
}
➜  diff vim hello.c 
➜  diff cat hello.c
#include "stdio.h"
int main(int argc ,char **argv)
{
    printf("Hello World
");
    return 0;
}
// 修改了檔案diff 

我們再進行校驗:

diff md5sum -c hi.md5
hello.c: FAILED
hello_new.c: OK
hello_test.c: OK
hi.patch: OK
md5sum: WARNING: 1 computed checksum did NOT match

我們發現,其中被修改的檔案校驗失敗 , md5sum 命令能和很好得檢驗檔案的完整性。

sha256sum 命令 和 md5sum 命令一樣的功能,只是使用演算法不同,sha256相對 md5sum 更為準確,所以現在很多的系統的發行版都是使用 sha256sum 進行校驗!

而且 sha 演算法相關的演算法很多,命令使用大同小異,只是使用的金鑰長度不同。

NAME
       sha256sum - compute and check SHA256 message digest

SYNOPSIS
       sha256sum [OPTION]... [FILE]...

DESCRIPTION
       Print or check SHA256 (256-bit) checksums.

       With no FILE, or when FILE is -, read standard input.

       -b, --binary
              read in binary mode

       -c, --check
              read SHA256 sums from the FILEs and check them

       --tag  create a BSD-style checksum

舉個實際的例子:kali linux

Image Name Download Size Version sha256sum
Kali Linux 64 Bit HTTP | Torrent 2.8G 2018.2 56f677e2edfb2efcd0b08662ddde824e254c3d53567ebbbcdbbf5c03efd9bc0f
Kali Linux Light 64 Bit HTTP | Torrent 865M 2018.2 554f020b0c89d5978928d31b8635a7eeddf0a3900abcacdbc39616f80d247f86
Kali Linux E17 64 Bit HTTP | Torrent 2.6G 2018.2 be0a858c4a1862eb5d7b8875852e7d38ef852c335c3c23852a8b08807b4c3be8
Kali Linux Lxde 64 Bit HTTP | Torrent 2.6G 2018.2 449ecca86b0f49a52f95a51acdde94745821020b7fc0bd2129628c56bc2d145d

這是 kali linux 的光碟,我們現在使用 curl -O 命令進行下載,然後使用 sha256sum 命令進行校驗:

➜  workplace curl -O http://mirrors.neusoft.edu.cn/kali-images/kali-2018.2/kali-linux-light-2018.2-amd64.iso
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  864M  100  864M    0     0   518k      0  0:28:26  0:28:26 --:--:--  661k
➜  workplace sha256sum kali-linux-light-2018.2-amd64.iso 
554f020b0c89d5978928d31b8635a7eeddf0a3900abcacdbc39616f80d247f86  kali-linux-light-2018.2-amd64.iso

通過比較,我們可以發現sha256sum 生成的雜湊值與表中的雜湊序列相同。

保持更新,轉載請註明出處。

相關文章