使用 PowerShell 計算檔案的 MD5 與 SHA 等檢查碼(checksum),確認檔案內容有無損壞或是遭到竄改。

當我們透過網路分享一些重要的檔案時,如果擔心檔案在傳輸的過程出現問題,或是遭到有心人士竄改內容等,就可以在發佈檔案之前,先計算檔案的檢查碼(checksum),而在分享檔案的同時也一併附上檔案的檢查碼,這樣接收者只要計算檔案的檢查碼,並確認自己算出的檢查碼與發佈者的檢查碼相同,就可以確保收到的檔案是完全相同的。

計算檢查碼

若要在 Windows 中計算檔案的檢查碼,最簡單又快速的方式就是使用 PowerShell 內建的 Get-FileHash 指令,不需要安裝任何軟體即可立即使用。例如若要計算 iris.csv 這一個檔案的檢查碼,可以執行:

# 計算檔案的檢查碼
Get-FileHash iris.csv

檢查碼演算法

Get-FileHash 指令預設會使用 SHA256 的演算法來計算檢查碼,若要使用其他不同的演算法,可以用 -Algorithm 參數來指定演算法的名稱,例如計算傳統上常用的 MD5 檢查碼:

# 計算 MD5 檢查碼
Get-FileHash iris.csv -Algorithm MD5

除了 SHA256MD5 之外,可用的演算法還有 SHA1SHA384SHA512

# 計算 SHA1 檢查碼
Get-FileHash iris.csv -Algorithm SHA1

# 計算 SHA384 檢查碼
Get-FileHash iris.csv -Algorithm SHA384

# 計算 SHA512 檢查碼
Get-FileHash iris.csv -Algorithm SHA512

詳細輸出

預設的 Get-FileHash 指令輸出並不會標示其所使用的演算法,若想要讓輸出的訊息可以直接看出使用的演算法,可以配合 Format-List 指令,將所有的資訊都輸出來:

# 詳細輸出
Get-FileHash iris.csv -Algorithm MD5 | Format-List

參考資料