在Windows中創建校驗和驗證文件完整性

您是否曾經下載一個檔案,只是發現該檔案已經被損壞或更改?確認檔案完整性的最佳方式是驗證檔案的校驗總和或哈希值。幸運的是,有幾種方法可以在Windows中驗證一個檔案的校驗總和。

繼續閱讀,因為您將學習到幾種免費計算Windows檔案校驗總和的方法!學習使用內建的Windows工具和第三方工具來產生一個檔案的校驗總和值。

在這篇文章中,您將學習如何使用五種不同的工具在Windows中創建校驗總和。最後,您肯定會知道如何在Windows中創建哈希值!

前提條件

由於這是一篇如何做的文章,您將遵循學以致用的方法。這篇文章中使用的一些工具是內建的或由微軟提供的;也有一些來自第三方來源。要跟隨進來,請確保您至少有一台運行Windows 10或至少是Windows Server 2012的電腦。

每種產生校驗總和的方法所需的前提條件將根據需要提供。

檔案校驗總和完整性驗證器 (FCIV)

檔案校驗總和完整性驗證器 (FCIV) 是微軟的工具,最初在Windows Server 2012 R2中引入,並可用於所有未來的版本。

假設你已在 C:\Tools\fciv.exe 安裝了 FCIV 工具。在命令提示符或 PowerShell 提示中運行以下命令以生成文件 VSCodeUserSetup-x64-1.52.1.exe 的 MD5 校驗和。如果你的文件存放在其他地方,請相應地修改位置。

C:\Tools\fciv.exe C:\downloads\VSCodeUserSetup-x64-1.52.1.exe

運行 FCIV 命令後,你將看到類似於下面截圖中的結果。正如你所看到的,fciv.exe 命令默認為給定的文件生成了 MD5 哈希。

Computing an MD5 checksum in Windows using fciv.exe.

FCIV 只能生成 MD5 或 SHA-1 文件哈希。

現在,你已經計算出 MD5 校驗,為什麼不再生成文件的 SHA-1 校驗呢?要為上述示例中使用的同一文件創建 SHA-1 校驗,請在現有命令的末尾添加 sha1 選項。如下圖所示,為相同文件生成了 SHA-1 哈希。

C:\Tools\fciv.exe C:\downloads\VSCodeUserSetup-x64-1.52.1.exe -sha1
Generating SHA-1 checksum in Windows using fciv.exe.

幹得好!你已經創建了 MD5 和 SHA-1 校驗值。為什麼不同時生成 MD5 和 SHA-1 哈希值呢?不使用 sha1 選項,而使用 both。由下圖可見,生成了相同文件的 MD5 和 SHA-1 哈希值。

C:\Tools\fciv.exe C:\downloads\VSCodeUserSetup-x64-1.52.1.exe -both

生成的哈希值標記為 MD5 和 SHA-1。在需要生成 MD5 和 SHA-1 哈希值時,使用 both 參數可節省時間。

Computing both MD5 and SHA-1 checksum using fciv.exe.

儘管 FCIV 是一個方便的計算文件哈希的工具,但它已經比較老舊,哈希算法僅限於 MD5 和 SHA-1。儘管如此,在缺乏其他工具的情況下,FCIV 仍然可以作為一個不錯的替代品,儘管 Microsoft 已正式宣布 FCIV 是不受支持的命令行工具。

在这一步,您已经使用 fciv.exe 工具创建了 MD5 和 SHA-1 散列值。目前您的想法如何?我知道您已准备好学习下一个工具。

使用 Certutil

Certutil 是在 Windows 中生成文件校验和的另一个优秀工具。确切的程序名称是 certutil.exe,它已经预装。

certutil.exe 的主要目的是处理 证书。但是,certutil.exe 具有使用以下散列算法在 Windows 中创建文件校验和的功能:

  • MD2
  • MD4
  • MD5
  • SHA1
  • SHA256
  • SHA384
  • SHA512

让我们看看它是如何工作的。

启动 PowerShell 或命令提示符以开始计算文件校验和,使用下面显示的语法。

certutil.exe -hashfile [Path to File] [Hash Algorithm]

在下面的示例中,certutil.exe 生成文件 C:\downloads\VSCodeUserSetup-x64-1.52.1.exe 的 SHA-256 散列,如结果截图所示。

certutil.exe -hashfile "C:\downloads\VSCodeUserSetup-x64-1.52.1.exe" SHA256
Using certutil.exe to create a file checksum.

现在您知道如何使用 certutil.exe 创建文件校验和了。为了练习,尝试使用所有其他可用的算法生成文件的散列值。继续阅读以了解如何使用 Get-FileHash 和 PowerShell 生成文件散列!

你知道嗎,例如 SHA-256 這樣的雜湊演算法也被用於建立 SSL 憑證嗎?

使用 PowerShell 的 Get-FileHash Cmdlet

自本文開始,您一直在閱讀和使用命令行工具來在 Windows 上創建文件校驗和檢查和校驗和檢查和校驗。您將學習如何使用的另一個命令行工具是 Get-FileHash PowerShell cmdlet。

在使用 Get-FileHash 之前,請參考下面的語法以熟悉可用的參數。使用 Path 參數來指定目標文件,使用 Algorithm 參數來指示要使用的雜湊演算法。

Get-FileHash -Path [path to file] -Algorithm [Hash Algorithm]

可用於 Get-FileHash 的雜湊演算法如下所示。您會注意到雜湊演算法的選擇與 FCIV 和 CertUtil 提供的不同。此外,較舊且較易受攻擊的演算法已不再包括,例如 MD1 和 MD4 演算法。

  • SHA1
  • SHA256
  • SHA384
  • SHA512
  • MACTripleDES
  • MD5
  • RIPEMD160

下面的命令使用 SHA-256 算法計算檔案 VSCodeUserSetup-x64-1.52.1.exe 的雜湊值。複製並執行下面的代碼在 PowerShell 中進行測試,請確保根據需要更改檔案路徑。

Get-FileHash -Path C:\downloads\VSCodeUserSetup-x64-1.52.1.exe -Algorithm sha256

正如您在下面的截圖中所看到的那樣,Get-FileHash 命令使用了指定的 -Algorithm sha256 參數計算了檔案的 SHA-256 雜湊。

Using Get-FileHash to compute the SHA-256 checksum of a file.

如果您想使用不同的算法計算檔案的檢查和值,您只需要更改 Algorithm 參數的值。現在您認為您能夠使用 Get-FileHash 創建檔案的 SHA-512 校驗和值嗎?我打賭您能夠!

同時生成多個檔案的雜湊值

使用 Get-FileHash,可以同時生成多個檔案的校驗和值。下面的示例代碼將檔案路徑列表存儲在 $files 變數中。接下來,Get-FileHash 使用 $files 變數來計算每個檔案的 SHA-256 校驗和值,如下面的截圖所示。

$files = @(
    'C:\downloads\PowerShell-7.1.0-win-x64.msi',
    'C:\downloads\VSCodeUserSetup-x64-1.52.1.exe'
)
Get-FileHash -Path $files -Algorithm sha256
Using Get-FileHash to compute the hash values for each file stored in the $files array.

如果您需要為一個滿是檔案的文件夾生成雜湊值怎麼辦?您可以使用 Get-ChildItem cmdlet 來檢索給定文件夾中的檔案列表,而不是手動製作 $files 陣列。

在下面的命令中,Get-ChildItem cmdlet 檢索了 c:\downloads 文件夾中的檔案列表。然後,將結果通過 PowerShell 管道傳遞到 Get-FileHash cmdlet,該 cmdlet 又計算了每個檔案的 SHA-256 雜湊值。

(Get-ChildItem C:\downloads).Fullname | Get-FileHash -Algorithm sha256

根據檔案大小,生成校驗和檢查的時間可能會有所不同。在這個例子中,該命令大約花費了二十秒的時間來計算一個8GB的ISO檔案的校驗和檢查。結果應該與下面的截圖類似。

Using Get-ChildItem and Get-FileHash to compute the hash values for each file in a folder.

在Windows中使用第三方工具創建檔案的校驗和檢查

如果由於某些原因,你發現Windows內置的工具不能滿足生成檔案的校驗和檢查的需求,那麼可以使用第三方工具。並非所有的第三方工具都是免費的,但以下是一些免費且受歡迎的工具。

7-Zip

你是否厭倦了使用命令行,並正在尋找一個可以在Windows中創建檔案的校驗和檢查的圖形化工具?7-zip是一個流行且免費的檔案壓縮工具,可以生成檔案的哈希值。

安裝7-zip後,它會自動添加右鍵菜單選項,用於生成檔案的校驗和檢查。按照以下步驟獲取檔案的哈希值:

  1. 右鍵單擊要生成校驗和檢查的檔案。
  2. 選擇CRC SHA菜單選項,列出可用的哈希算法。
  3. 最後,點擊所需的哈希算法。

在下面的例子中,星號(*)選項使用所有可用的算法顯示檔案的哈希值。怎麼樣,這很簡單吧?

Using the 7-Zip context menu to calculate a file’s checksum in Windows.

接下來,學習如何使用HashMyFiles工具作為7-Zip的替代方法生成多個檔案的校驗和檢查。

HashMyFiles

忘記命令列和右鍵點擊。HashMyFiles 可以使用拖放功能創建單個文件、多個文件或整個目錄的檢查碼或哈希值。

啟動 HashMyFiles 程序,將文件或文件夾拖放到 HashMyFiles 主窗口以生成相應的哈希值。如下所示,主窗口以表格形式顯示文件及其關聯的哈希值,額外的信息可在屬性窗口中查看。

Using HashMyFiles to get the file hash of multiple files by using drag and drop

此外,HashMyFiles 還可以將哈希或檢查碼值匯出為 HTML 報告或制表符分隔的文件。當您想要保留文件檢查碼值的記錄時,此匯出功能非常有用。

下一步

在本文中,您已經了解到在 Windows 中創建文件檢查碼的幾種方法。Microsoft 內置了命令行工具,如 certutil.exeGet-FileHash

還有一些免費且相對易於使用的第三方工具。無論您選擇哪種工具來生成文件哈希值,每種哈希算法的概念和結果都是相同的。

接下來呢?也許可以考驗一下您的腳本編寫技能,使用本文介紹的任何工具創建重要文件的檢查碼清單。

Source:
https://adamtheautomator.com/checksum-windows/