md5sum 和 sha256sum 都用來用來校驗軟體安裝包的完整性,本次我們將講解如何使用兩個命令進行軟體安裝包的校驗: sha 是什麼? sha 為 安全散列演算法(英語:Secure Hash Algorithm,縮寫為SHA)是一個密碼散列函數家族,是FIPS所認證的安全散列演算法。能計算出一 ...
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.patch ➜ diff 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.patch ➜ diff cat hi.md5 1e21e6bf97bf1e7a7ec9be72f3b068a0 hello.c 1e21e6bf97bf1e7a7ec9be72f3b068a0 hello_new.c a6e14a356b8a2ad9c99e606e73143aaf hello_test.c f11ca2f605a3ab177f4101103c64c658 hi.patch ➜ diff
使用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\n"); return 0; } ➜ diff vim hello.c ➜ diff cat hello.c #include "stdio.h" int main(int argc ,char **argv) { printf("Hello World\n"); 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 生成的散列值與表中的哈希序列相同。
保持更新,轉載請註明出處。