先遵循協定,不是先挑最長結果
對方提供 MD5,就計算 MD5,不能拿 SHA-256 比較。自行設計新的通用指紋流程時,SHA-256 通常比 MD5 合適,但一般摘要仍不是身分驗證機制。儲存時必須同時保留演算法名稱。
| 比較項目 | MD5 | SHA-256 |
|---|---|---|
| 摘要長度 | 128 位元 | 256 位元 |
| 完整十六進位 | 32 個字元 | 64 個字元 |
| 一般摘要包含金鑰嗎 | 不包含 | 不包含 |
| 可作為可逆加密嗎 | 不可 | 不可 |
相符究竟代表什麼
兩個相同結果表示目前輸入與計算規則下的數值一致,無法說明誰提供了檔案。如果檔案與參考摘要都來自同一條被控制的管道,攻擊者可同時替換兩者。需要發布者真實性時,應使用可信管道及對應數位簽章驗證流程。
MD5 的碰撞弱點在對手刻意構造不同內容時尤其重要。「平常檢查複製檔案可用」不是把 MD5 引入新簽章格式的理由。不過,為歷史介面重現既定 MD5,仍可是一項明確且正當的相容性工作。
先比較相同位元組
abc、abc 加換行、含 UTF-8 位元組順序記號的檔案,是不同輸入。解壓目錄也不是壓縮檔原始位元組。重新命名通常不影響摘要,重新建置或壓縮卻可能改變中繼資料。
首頁單筆文字同時顯示 MD5、SHA-256、SHA-512;標籤用來區分演算法,應依標籤選擇要核對的結果。核對檔案時選擇發布者指定演算法,並比較完整值,不要只看前幾個字元。
訊息驗證與密碼是不同工作
共享金鑰驗證應使用 HMAC 等明確定義的構造,不是臨時把金鑰與訊息串接。密碼儲存需要專用設計及適當參數,不是改用較長的快速摘要就算完成。校驗工具也不是防毒軟體、簽章驗證器或復原服務。
提供可用的核對資訊
記錄演算法、完整結果與檔案版本。可信參考應與尚未驗證的檔案分開管理。本機匯出可保留識別碼與計算值,不預設包含私密原文或金鑰。不相符時先排查參考來源與版本,再決定是否重新下載或聯絡發布者。