Windows如何驗證檔案的SHA256雜湊值
SHA256雜湊值就像檔案的指紋。如果下載檔案的雜湊值與公布的值相同,代表拿到的正是發布的那個檔案,沒有被修改,也沒有下載錯誤。
用PowerShell計算雜湊值
Get-FileHash是Windows內建的指令。在下載檔案所在的資料夾中執行,預設演算法就是SHA256。
Get-FileHash .\vlc-3.0.21-win64.exe -Algorithm SHA256用命令提示字元計算
每個Windows版本都有certutil,它會以小寫輸出同樣的值(舊版Windows會在位元組之間加上空格)。
certutil -hashfile vlc-3.0.21-win64.exe SHA256自動比對
把公布的雜湊值貼到引號中。比對不分大小寫,檔案相符時會輸出True。
(Get-FileHash .\vlc-3.0.21-win64.exe).Hash -eq "公布的SHA256雜湊值"雜湊值不符代表什麼
代表這個檔案不是發布的那個:可能是下載中斷、被代理伺服器修改,或是開發商在同一個網址換了檔案。請不要執行它,改從官方網址重新下載;如果雜湊值仍然不同,多半是開發商換了檔案,資訊清單之後會更新。
同時檢查數位簽章
雜湊值證明檔案沒有被修改,簽章則說明是誰發布的。在PowerShell中,Get-AuthenticodeSignature會顯示簽署者以及簽章是否有效。在檔案總管中:「內容」→「數位簽章」。
Get-AuthenticodeSignature .\vlc-3.0.21-win64.exe | Format-List Status, SignerCertificate常見問題
雜湊值相符就代表程式沒有惡意軟體嗎?
不是。它只代表檔案與套件資料中列出的檔案相同。要檢查內容,請掃描檔案或在VirusTotal上查詢它的雜湊值;ExeAtlas為每個安裝檔都提供了查詢連結。
SHA256比MD5或SHA1好嗎?
是的。MD5與SHA1可以被刻意偽造出相同的值,以目前的技術則無法偽造SHA256,這也是winget採用它的原因。