Hash 函數對比:MD5、SHA-1、SHA-256 與 CRC32
Hash 函數把任意輸入壓縮成固定長度的指紋:同一個檔案永遠得到同一個字串,改動一個位元組就會雪崩成完全不同的串。這一個特性服務於三種完全不同的任務——發現損壞、內容指紋,以及配合額外機制保護密碼。
1. 檔案校驗:MD5、SHA-1、SHA-256
下載頁公布校驗和,就是讓你確認檔案完整到達:對自己的副本算一次 Hash,比對字串。MD5 最快,查意外損壞完全夠用,SHA-1 居中,SHA-256 是重要場合的當前預設。只有 GB 級大檔案才感覺得到速度差別。
2. 安全上已失效,完整性上沒問題
MD5 和 SHA-1 在蓄意攻擊者面前已經碎了——研究者能造出 MD5 相同的兩個不同檔案,SHA-1 幾年前也被實際攻破。所以簽名、憑證、密碼儲存一律不能用它們;但你的 Linux ISO 下載包裡不會藏著攻擊者,純查損壞它們依然完全稱職。
3. 密碼要慢,不要快
快速 Hash 是存密碼的錯誤工具,因為攻擊者每秒能試幾十億次。真正的密碼儲存用又慢又加鹽又吃記憶體的專用函數。如果某篇教學教你存密碼的 MD5,關掉那篇教學。
4. CRC32 與 HMAC,簡單說
CRC32 根本不是密碼學 Hash——它是網路和 ZIP 檔案裡的快速檢錯碼,查傳輸抖動很在行,防偽造毫無用處。HMAC 則把金鑰混進 Hash,讓接收方同時驗證完整性和真實性。用 our hash generator 對自己的文字或檔案親手試一遍這些演算法,全部在瀏覽器本地計算。