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

来源:https://www.cnblogs.com/xuyaowen/archive/2018/07/26/md5sum_sha256_usages.html
-Advertisement-
Play Games

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.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\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 生成的散列值與表中的哈希序列相同。

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在Linux 中磁碟陣列RAID10配置中我們已經正確配置了RAID10 ,一般來說在RAID10中最多允許50%的磁碟損毀,當然除了,同一磁碟RAID1中的硬碟設備全部損毀。 這次我們討論一下:假設RAID中的某一個硬碟損毀了,如何修複? 1.損毀其中一塊磁碟sdd 2.查看錯誤: 3.若此時,我 ...
  • 我們自己安裝的ubuntu通常預設鏡像源是官方的,並不好用,因為網速以及限制比較多,所以為了使用方便,通常都會去更改一下預設的鏡像源配置。 這裡我們使用清華大學開源鏡像軟體站,https://mirrors.tuna.tsinghua.edu.cn 我的終端使用了root賬戶,命令行全部未用sudo ...
  • 首先,瞭解一下RAID是什麼?(百度所得) 獨立磁碟冗餘陣列(RAID,redundant array of independent disks)是把相同的數據存儲在多個硬碟的不同的地方(因此,冗餘地)的方法。通過把數據放在多個硬碟上,輸入輸出操作能以平衡的方式交疊,改良性能。因為多個硬碟增加了平均 ...
  • 大家好,這是我發表的第一篇文章,希望大家看到不對的地方指出來,也可以和我交流。本人是小白一名。下麵介紹如何安裝centos7的基本步驟。 步驟一: 到centos官網下載centos7鏡像(http://isoredirect.centos.org/centos/7/isos/x86_64/Cent ...
  • 好久沒更了,今天就更完這一期的Linux系統吧,這次主要安裝的是常用Linux系統的之一:Ubuntu(烏班圖)系統,這個系統和CentOS 7的安裝步驟也是類似的,(我不採取用虛擬機的方法來安裝,當然在虛擬機安裝是很方便,但是卻有問題,至於是什麼問題?請看本文最後部分。)PE系統中沒有適合的工具來 ...
  • 幾個小概念 date:系統時間 clock:硬體時間 clock -w:硬體時間根據系統時間同步 ntpdate:馬上同步時間 ntp:網路時間協議,起到的效果是讓你的時間始終穩定持續的同步,前提是時間差別不是很大 我們在生產環境中時間是個很重要的角色 下麵來說下同步時間的方法 首先我們知道一個服務 ...
  • 1.首先新建一個虛擬機併在該虛擬機上安裝Ubuntu16.04系統。為這台虛擬機起名為Ubuntu3。 2.對Ubuntu3進行克隆,為新克隆生成的虛擬機起名為Ubuntu2。(這時我們會發現Ubuntu2可以ping通Ubuntu3,但是反過來Ubuntu3無法ping通Ubuntu2。這是因為克 ...
  • ipvsadm ipvsadm命令是lvs集群在應用層的管理工具,我們可以通過此ipvsadm來管理lvs的配置,其實現了集群服務管理:增、刪、改,集群服務的RS管理:增、刪、改以及查看集群狀態。 管理集群服務:增、改、刪; 管理集群上的RS:增、改、刪; 查看集群的狀態信息: 規則的保存和重載: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...