# 怎樣用校驗和核對下載的檔案

下載連結底下那行十六進位放在那裡，是為了讓你能證明檔案是完好到達的。比對它大約花一分鐘。至於這次比對到底值多少，以及哪一個習慣會讓它一文不值，那要花掉這一頁的其餘部分。

[開啟雜湊與校驗和](https://abox.tools/zh-TW/hash-checksum/): 把下載來的檔案和釋出方公佈的那串數字對一下，不用把它發給任何人。

最後更新 2026年8月26日

## 簡短的回答

開啟[雜湊與校驗和](https://abox.tools/zh-TW/hash-checksum/)，把下載好的檔案拖進去，再把下載頁面上的校驗和貼到下面那個框裡。頁面會從長度看出那串數字是哪種演算法，然後用一句話回答。

對得上，說明你磁碟上的位元組就是釋出方量過的位元組。對不上，就先重新下載，再談開啟。下面寫的是這句話省掉的部分。

## 下載連結底下那串數字是什麼

是一個雜湊函式的輸出：一種讀遍檔案每一個位元組、給出一個又短又定長的答案的演算法。同一個檔案永遠給出同一個答案，而只差一個二進位位的檔案會給出完全不同的答案——不是相近的答案，是毫不相干的答案。整件事就靠這個性質撐著。

既然答案很短而檔案不短，這道算術就必然丟掉資訊，也就必然有很多檔案共用同一個答案。有意去找出其中一個，才是難的那一半；而難到什麼程度，正是下面這些演算法彼此的區別。

校驗和沒有什麼是保密的，也沒有辦法倒推回去。它是一枚指紋，公佈出來，好讓兩個人能就「我們手上是同一個東西」達成一致。

## 你面前的是哪一種

你不用挑。釋出方已經挑好了，你要做的是算出同一種。光看長度就能分辨：

- **32 個十六進位字元** — MD5.
- **40** — SHA-1.
- **64** — SHA-256，這也是你最常見到的一種。
- **96** — SHA-384.
- **128** — SHA-512.

沒有兩種長度相同，所以工具能夠在沒人告訴它的情況下認出你貼進來的是什麼。一串 63 個字元的東西不是任何東西的校驗和：那是一個在去剪貼簿的路上掉了一個字元的 SHA-256。

![結果卡片：同一個檔案的 MD5、SHA-1、SHA-256 和 SHA-512 摘要，每個後面都有複製按鈕。](https://abox.tools/screens/verify-a-file-checksum/digests.webp)

一次全給出來，因為該用哪一個是釋出檔案的一方定的，不是你定的。

## 不用瀏覽器，在自己機器上做

每個作業系統都內建能做這件事的工具，而且就算你用網頁來做，知道這條命令也值得。對於「我怎麼知道你們站算得老實不老實」這個問題，沒有比把同一個檔案餵給你自己電腦內建的工具更好的回答了。

**Windows**，在 PowerShell 裡：

```
Get-FileHash .\disk.iso -Algorithm SHA256
```

更老的機器上是 `certutil -hashfile disk.iso SHA256`，它輸出大寫並且帶空格。比對校驗和時大小寫從來無關緊要：那些字母是數字，不是詞。

**macOS**:

```
shasum -a 256 disk.iso
```

**Linux**:

```
sha256sum disk.iso
```

這三條對同一個檔案列印出同一串字元，本站也一樣。它們是有公開測試向量的嚴格規範，不給實現留下發表意見的餘地。

## 別把眼睛看花

不要在兩塊螢幕上各讀六十四個字元，然後判斷它們看起來一樣。人只會看頭四個和尾四個就收手，而這恰好是攻擊者會安排透過的那種比對，也是善意的疏忽混過去的方式。

把兩邊都貼進一個能替你比的東西裡。在命令列上，`-c` 就是做這個的：

```
sha256sum -c SHA256SUMS
```

在瀏覽器裡，就是[雜湊與校驗和](https://abox.tools/zh-TW/hash-checksum/)的比對框。它按釋出方寫下來的樣子收：光是十六進位、`sha256sum` 的一行、整份 `SHA256SUMS` 檔案、`SHA256 (disk.iso) = …` 這種寫法，或者從 script 標籤上扒下來的 `integrity="sha384-…"`。然後用一句話回答是或不是。

![比對卡片：一串校驗值被貼進輸入框，下面給出與檔案相符的判定。](https://abox.tools/screens/verify-a-file-checksum/compare.webp)

把下載頁面上寫的那串貼進來，比對交給工具。盯著螢幕數六十四個字元，正是它要省掉的那一步。

## 對上了，究竟證明了什麼

證明你磁碟上的這些位元組，就是某個人寫下那串數字時手邊的那些位元組。這確實值得知道，也比多數人以為的要窄，所以值得把它管得著和管不著的分別列出來。

**對上了，可以排除：**

- 一次提前停住、卻給你留下一個看起來完整的檔案的下載；
- 傳輸途中、快壞的硬碟上，或者一根劣質 USB 線造成的損壞；
- 拿錯了檔案：本該 x86 卻拿了 ARM，或者拿的是上個月的釋出；
- 一個不聲不響地發著與它所宣稱不同的東西的映象站。

**對上了，排除不了：**

- **這個檔案是惡意的。**釋出方量惡意軟體和量別的東西一樣準。校驗和說的是「這就是他們發出來的東西」，從來不是「這個東西安全」；
- **釋出方本身被攻破了。**能把伺服器上的檔案換掉的人，會在同一分鐘裡把下面那行校驗和也換掉。這就說到下一節了。

## 讓整件事白做的那個錯誤

從和檔案同一個頁面、同一條連線上取校驗和。

想一想你在防什麼。如果擔心的是下載壞了，校驗和從哪裡來都行，這次核對是有效的。如果擔心的是有人動過這個檔案，那麼能換掉檔案的人也能換掉印在下面的那行十六進位，因為兩者來自同一臺伺服器、同一條連線。你等於是在請偽造者確認簽名。

校驗和最值錢的時候，是它走的路和檔案不同的時候：

- 一份帶分離 GPG 簽名的 `SHA256SUMS`，用你本來就有的金鑰去驗。發行版就是這麼做的，這才是真正的答案；
- 從郵件列表的釋出公告或者原始碼儲存庫的標籤上取，而不是從下載頁面上取；
- 從另一個域名下的第二個映象取一份，再把兩份彼此對照；
- 交給包管理器，它會用隨作業系統一起來的金鑰替你做這件事。

這些都不意味著核對同頁面上的校驗和就沒用了。它抓得住壞掉的下載，而那正是真會落到人身上的故障。只是別對自己說它還抓住了別的什麼。

## MD5 和 SHA-1 已經破了。有時候還是照用

兩者都在這裡要緊的那個最強意義上破了：*碰撞*可以被刻意造出來。同一個 MD5 的兩個不同檔案，從 2004 年起用普通硬體就能做出來；2017 年一個團隊做出了同一個 SHA-1 的兩份不同 PDF。到 2020 年，能自選字首的那種攻擊已經降到幾萬美元的租用運算能力。

落到實處就是：對上的 MD5 不再能告訴你沒人動過這個檔案，因為想動的人本來就能造出一個同值的另一個檔案。它仍然能告訴你下載沒有被截斷、沒有損壞，因為隨機的意外不會正好撞上一個碰撞——那種機率是任何意外都沒有過的。

所以，如果釋出方只印了一個 MD5，那就核對它：這比不核對強。而如果釋出的人是你，請印一個 SHA-256。

## 對不上，現在怎麼辦

1. **重新下一次**，還從同一個地方。斷掉或者續傳過的傳輸是遙遙領先的頭號原因，第二份副本通常就把事情了結了。
2. **確認你比的是那一行。**釋出頁面上會列好幾個檔案：安裝檔的校驗和永遠不會和壓縮包的對上，ARM 的也不會和 x86 的對上。
3. **確認版本。**收藏起來的校驗和頁面，在小版本釋出的那天就過期了。
4. **換一個映象試試**，再把兩份檔案的校驗和彼此對照。兩個映象彼此一致卻都和公佈的數字不同，和一個映象同時和另外兩者不同，是兩種不同的問題。
5. **在弄清楚之前不要開啟它。**一個通不過校驗和的檔案，往好裡說是損壞了，往壞裡說根本不是你要的那個檔案。

## 為什麼要在瀏覽器裡做

因為命令列不是大多數人待的地方；也因為那個顯而易見的替代方案——一個讓你把檔案傳上去的網站——用來對付一個你本來就在懷疑的安裝檔，是件很奇怪的事。為了弄清楚檔案有沒有在路上被動過手腳而把它發到別處，等於又多加了一個可以被動手腳的地方。

[雜湊與校驗和](https://abox.tools/zh-TW/hash-checksum/)按每次 4 MB 在你自己的機器上讀這個檔案，所以沒有上傳、沒有大小上限，除了頁面本身之外也沒有別的需要你信任的東西；而那個頁面你讀得到，拔掉網線它照樣工作。如果你更願意信自己的作業系統，就跑上面那一節的命令，再把兩個答案對一下。它們會一樣。
