批次檔案雜湊與清單驗證器

一次批次選擇或拖入多個檔案,本頁就在瀏覽器內算出每個檔案的 MD5、SHA-1、SHA-256、SHA-384 或 SHA-512 摘要。然後既可以把結果複製成 sha256sum 相容行放進你的釋出說明,也可以貼上一份校驗和清單(SHA256SUMS、.sha256、.sfv、BSD openssl dgst 輸出),讓頁面告訴你哪些檔案通過驗證、哪些不匹配、哪些缺失。任何東西都不會被上傳。 單檔案、更多演算法見 雜湊生成器。
拖放檔案到此處,或點選選擇
最多 50 個檔案、每個 200 MB。檔案始終留在本機。
未選擇任何檔案。
— 十六進位制輸出;至少勾選一個。
點選任意摘要單元格即可複製。名稱和大小總是列出,因此表格也可當批次檔案大小檢視用。
選擇檔案並點選計算後,摘要表會出現在這裡。
貼上 GNU(雜湊  檔名)、BSD(SHA256 (name) = hash)、SFV(檔名 crc32)或 plain(sha256=雜湊)格式的清單,或直接上傳 .sha256 / SHA256SUMS / .sfv 檔案本身。以 ; 開頭的行視為註釋。
隱私:每個摘要都由瀏覽器自己的 JavaScript 與 WebCrypto 引擎計算 — 檔案從不離開這個標籤頁。提示:驗證完下載後直接關閉本頁即可,什麼都沒有儲存。

什麼是批次檔案雜湊?

校驗和是檔案的一份簡短指紋:把檔案的位元組餵給雜湊函式,得到的摘要在檔案哪怕一個位元組改變時幾乎必然改變。軟體釋出方把摘要登在下載旁邊,讓你能證明收到的檔案就是他們發出的那份 — 下載沒有被截斷或損壞,也沒有人調包成別的內容。

一次下一個檔案,對單個下載來說沒問題。一旦你面對的是一個資料夾,或內含 SHA256SUMS 清單的釋出包,就需要批次版:每個檔案雜湊一次,再把清單每一行對到相應檔案上核對。本頁自動化的正是這個迴圈。

本頁能讀的清單格式

樣式示例行出處
GNU900150983c...  hello.txtsha256sum / md5sum 輸出,Linux 發行版的 SHA256SUMS 檔案
BSDSHA256 (hello.txt) = 900150983c...macOS/BSD 上的 openssl dgst -sha256
SFVhello.txt 1A2B3C4DSimple File Verification 檔案,老式二進位制新聞組
plainsha256=ba7816bf...下載頁、釋出說明、Docker checksums

雜湊長度本身就說明了演算法:32 個十六進位制字元是 MD5,40 是 SHA-1,64 是 SHA-256,96 是 SHA-384,128 是 SHA-512 — 所以 GNU 格式的行不需要註明是哪個程式生成的。

簡要工作原理

每個檔案由瀏覽器的 FileReader 讀取一次,交給 crypto.subtle.digest(SHA 家族)和本地 MD5 實現。摘要按十六進位制編碼,與清單條目一一對齊;只有當計算出的摘要與期望值逐字元相等時,檔案才算通過驗證。SFV 行攜帶的是 CRC-32 而不是密碼學雜湊 — 本頁會將其標記為不支援,而不是假裝 CRC 等同於摘要。

常見錯誤

「我所有檔案都不匹配。」 — 原因通常是清單對應的是另一個版本的下載。先核對檔名:匹配器比較的是基本名,所以 dist/app-1.2.bin 能匹配清單裡的 app-1.2.bin。「SHA-1 驗證通過,檔案就安全了?」 — 不是。驗證只證明位元組與釋出方釋出的一致;釋出方是否可信是另一個問題。而且 SHA-1 自 2017 年起已被碰撞攻破,有得選時優先用 SHA-256 清單。

常見問題

雜湊大檔案慢嗎? — 普通機器上大約每 200 MB 一秒;進度行會顯示批次的進度。
能驗證 CRC-32 的 SFV 清單嗎? — SFV 行會被解析並列出,但本頁不計算 CRC-32;單檔案請用加密中心的 CRC 工具。
為什麼只有十六進位制? — 實際流傳的清單都是十六進位制;base64 摘要算附加功能。
我的檔案會怎樣? — 什麼都不發生:沒有伺服器、沒有儲存、沒有分析;關掉標籤頁,輸入的每個位元組都消失了。