你可能曾經在下載軟體時看過一串像亂碼的文字,旁邊寫著「MD5」或「SHA256」——那串看起來毫無意義的字符,其實是保護你資料安全的重要守門員。今天這篇文章,將帶你從零開始理解 Hash(雜湊)是什麼、為什麼它如此重要,以及 MD5、SHA256 這些常見演算法到底有什麼差別。
什麼是 Hash(雜湊)?
Hash,中文翻譯為「雜湊」或「散列」,是一種單向加密技術。它可以把任意長度的資料(不管是一封信、一部電影、還是一個檔案),透過數學運算轉換成固定長度的字串。
舉個例子:
輸入「Hello」→ Hash 輸出可能是 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c
輸入「Hello!」→ Hash 輸出變成完全不同的 33d0e69e965267fae63e4e4a0c4e8f2c8b3ce1b8
只要輸入有一丁點變化,輸出就會天差地遠。這就是 Hash 的神奇之處。
Hash 的三大特性
要理解 Hash,必須知道它有三個關鍵特性:
1. 單向性(One-way)
你可以輕鬆把原始資料轉成 Hash 值,但無法從 Hash 值反推回原始資料。這就像把雞蛋打成蛋液容易,但想把蛋液變回完整的雞蛋?不可能。
2. 確定性(Deterministic)
同樣的輸入,永遠會產生同樣的輸出。今天用「password123」跑 MD5,明天跑、後天跑,結果都一樣。
3. 雪崩效應(Avalanche Effect)
輸入只要有微小變化,輸出就會徹底改變。改一個字母、加一個空格,Hash 值就完全不同,找不出任何規律。
Hash 在日常生活中的 5 大應用
Hash 不只是資安人員的專業術語,它其實滲透在你的日常生活中:
1. 密碼儲存
當你在網站註冊帳號,網站不會直接把你的密碼存進資料庫(至少負責任的網站不會)。它們儲存的是密碼的 Hash 值。
登入時,系統把你輸入的密碼跑一次 Hash,再比對資料庫裡的 Hash 值。這樣即使駭客入侵資料庫,拿到的也只是一堆無法反推的亂碼。
根據 2024 年 Verizon 資料外洩調查報告,86% 的資料外洩涉及竊取憑證。使用強健的 Hash 演算法儲存密碼,是防止災難的第一道防線。
2. 檔案完整性驗證
下載 Linux ISO、軟體安裝檔時,官網通常會提供 MD5 或 SHA256 值。下載完成後,你可以用工具計算檔案的 Hash,比對是否一致。
如果 Hash 值不同,代表檔案在傳輸過程中損壞,或者更糟——被駭客動過手腳、植入惡意程式。
3. 區塊鏈與加密貨幣
比特幣等加密貨幣的核心技術就是 Hash。每一個區塊都包含前一個區塊的 Hash 值,形成不可竄改的鏈條。想偷改某一筆交易?你必須重新計算那之後所有區塊的 Hash,在算力上幾乎不可能。
4. 資料庫索引與快取
程式設計中,Hash Table(雜湊表)是最常用的資料結構之一。它能在接近 O(1) 的時間複雜度內完成查詢,比逐筆比對快上百萬倍。
5. 數位簽章
當你收到一份電子合約,怎麼確定內容沒被竄改?數位簽章會先對文件內容做 Hash,再用私鑰加密這個 Hash 值。驗證時,解密後比對 Hash,就能確認文件的完整性與來源。
常見 Hash 演算法比較
Hash 演算法有很多種,以下是最常見的幾種:
MD5(Message Digest 5)
輸出長度:128 位元(32 個十六進位字元)
速度:極快
安全性:已被破解,不建議用於安全用途
MD5 誕生於 1991 年,曾經是密碼學界的明星。但 2004 年中國密碼學家王小雲教授發現了它的碰撞漏洞——可以人為製造兩筆不同資料卻產生相同 Hash 值的情況。
現況:MD5 已不適合用於密碼儲存或安全驗證。但因為速度快,仍常用於非安全性的校驗,例如檢查檔案傳輸是否完整。
SHA-1(Secure Hash Algorithm 1)
輸出長度:160 位元(40 個十六進位字元)
速度:快
安全性:已被破解,正在淘汰中
SHA-1 由美國國家安全局(NSA)設計,2005 年開始出現理論上的碰撞攻擊,2017 年 Google 與荷蘭研究機構正式展示了實際的碰撞案例(SHAttered 攻擊)。
目前 Chrome、Firefox 等主流瀏覽器已不再信任使用 SHA-1 簽發的 SSL 憑證。
SHA-256(SHA-2 家族)
輸出長度:256 位元(64 個十六進位字元)
速度:中等
安全性:目前安全,廣泛使用中
SHA-256 是 SHA-2 家族的成員,也是目前最主流的安全 Hash 演算法。比特幣的挖礦演算法就是 SHA-256。到 2026 年為止,SHA-256 尚未有已知的碰撞攻擊。
SHA-3
輸出長度:可變(224/256/384/512 位元)
速度:比 SHA-2 稍慢
安全性:非常安全
SHA-3 於 2015 年正式成為標準,採用完全不同於 SHA-2 的 Keccak 演算法結構。它的設計初衷是「備胎」——萬一 SHA-2 被攻破,還有 SHA-3 可用。
演算法比較表
以下是各演算法的快速比較:
MD5:32 字元、速度最快、已不安全、適合非安全校驗
SHA-1:40 字元、速度快、已不安全、正在淘汰
SHA-256:64 字元、速度中等、安全、目前主流
SHA-512:128 字元、速度中等、非常安全、高安全需求
SHA-3:可變、速度較慢、非常安全、未來備選
如何選擇適合的 Hash 演算法?
根據不同場景,選擇策略也不同:
密碼儲存
推薦:bcrypt、Argon2、scrypt
等等,這些不是前面介紹的那些 Hash 演算法啊?沒錯。對於密碼儲存,單純的 SHA-256 其實不夠安全。
原因是 SHA-256 太快了。駭客可以用 GPU 每秒嘗試數十億次 Hash 計算,暴力破解弱密碼。bcrypt、Argon2 這類演算法被設計成刻意很慢,還會佔用大量記憶體,讓暴力破解變得不划算。
如果你是開發者,2026 年的最佳實踐是使用 Argon2id,它是密碼雜湊大賽(Password Hashing Competition)的冠軍。
檔案校驗
推薦:SHA-256
檢查檔案完整性時,SHA-256 是目前的黃金標準。雖然 MD5 速度更快,但既然 SHA-256 也夠快、又更安全,沒理由冒險。
區塊鏈與數位簽章
推薦:SHA-256 或 SHA-3
這類場景對安全性要求最高,SHA-256 是目前的業界標準。如果是全新設計的系統,也可以考慮 SHA-3。
快速校驗(非安全用途)
推薦:MD5 或 xxHash
如果只是要快速比對兩個檔案是否相同(例如備份工具),不涉及安全性,MD5 甚至更快的 xxHash 都是好選擇。
實際操作:如何計算 Hash 值?
不管你用的是 Windows、Mac 還是 Linux,都能輕鬆計算 Hash 值:
Windows
打開 PowerShell,輸入:
Get-FileHash -Algorithm SHA256 C:\path\to\file.zip
把 SHA256 換成 MD5,就能算 MD5 值。
Mac / Linux
打開終端機:
shasum -a 256 /path/to/file.zip
md5sum /path/to/file.zip
線上工具
如果你不想打指令,也有許多線上 Hash 計算工具。我們的效率工具網站也提供免費的 Hash 計算器,支援 MD5、SHA-1、SHA-256 等多種演算法,拖曳檔案即可計算。
Hash 的常見誤解
最後,讓我們釐清幾個常見的誤解:
誤解 1:Hash 是一種加密
錯。加密(Encryption)是雙向的——加密後可以解密回原文。Hash 是單向的,無法還原。兩者用途完全不同。
誤解 2:不同資料不可能有相同 Hash
理論上可能。這叫做「碰撞」(Collision)。只是好的 Hash 演算法會讓碰撞的機率極低——SHA-256 的碰撞機率是 1/2^128,比中樂透連中一百次還低。
誤解 3:SHA-256 永遠不會被破解
沒人敢保證。密碼學的歷史就是不斷破解與創新的循環。MD5 當年也被認為很安全。保持警覺,隨時準備遷移到更新的演算法。
結語:保護資料安全的第一步
Hash 是現代資訊安全的基石。從你每天登入的網站、下載的軟體,到區塊鏈上的每一筆交易,背後都有 Hash 在默默守護。
現在你已經了解 Hash 的原理、常見演算法的差異,以及如何選擇適合的工具。下次看到那串「亂碼」時,你會知道——那不是亂碼,那是數位世界的指紋。
想要親手試試 Hash 計算嗎?來卡卡的效率工廠,我們提供免費的線上 Hash 計算器,支援多種演算法,讓你立刻上手!
封面圖片來源:Sasun Bughdaryan on Unsplash