雜湊函數(Hash Function)把任意長度的輸入轉換成固定長度的輸出,這個輸出通常稱為雜湊值、摘要或指紋。在資訊安全與資料完整性領域,加密雜湊函數扮演核心角色。本文從特性、常見演算法到實際應用,提供較完整的說明,幫助正確理解與使用相關工具。
並非所有雜湊函數都適合安全用途。加密雜湊函數需要滿足以下幾點:
雪崩效應也是重要特徵:輸入僅改變一個位元,輸出的雜湊值應有大約一半的位元發生變化。這使得微小差異不會產生相似的雜湊值。
SHA-256 屬於 SHA-2 家族,輸出 256 位元(64 個十六進位字元)。它是目前最廣泛使用的加密雜湊演算法之一,應用於檔案校驗、區塊鏈、數位簽章、憑證等場景。SHA-512 提供更長的輸出,在 64 位元平台上有時效率更高。
MD5 與 SHA-1 曾經流行,但都已發現實際可行的碰撞攻擊。它們不應再用於安全敏感用途(例如憑證簽章、密碼儲存)。僅在相容性或非安全的校驗場景下,仍可能看到舊系統使用它們。新系統應優先選擇 SHA-256 或更新的演算法。
SHA-3(基於 Keccak)採用不同的內部結構,作為 SHA-2 的備選。BLAKE2、BLAKE3 等則在速度與安全性之間提供不同取捨,常見於需要高效雜湊的應用。
下載軟體、韌體或重要檔案時,發布者通常會提供 SHA-256 雜湊值。使用者下載後在本地計算檔案的雜湊值,與官方公布的值比對。如果完全一致,可以高信心地認為檔案在傳輸過程中沒有被篡改或損壞。
這個過程無法證明檔案來源絕對可信(發布者本身可能已被入侵),但能有效偵測傳輸錯誤與中間人篡改。比對時應使用可信渠道取得官方雜湊值,避免攻擊者同時替換檔案與雜湊值。
系統不應以明文儲存密碼。常見做法是儲存密碼的雜湊值,並加入唯一的鹽值(salt)。驗證時,把使用者輸入的密碼加上相同鹽值後再雜湊,與儲存值比對。即使資料庫外洩,攻擊者也無法直接讀取原始密碼。
然而,單純快速雜湊(如單次 SHA-256)對密碼來說不夠理想,因為現代硬體可以極高速地嘗試大量猜測。專門的密碼雜湊函數(如 Argon2、bcrypt、scrypt)故意設計成計算緩慢且可調參數,增加暴力破解成本。一般檔案雜湊工具不適合直接用來「保護」密碼。
雜湊也用於資料去重、快取鍵、承諾機制(commitment scheme)等。在這些場景中,抗碰撞性仍然重要。雜湊不是加密:它無法還原原始資料,也不能提供機密性。需要保密時應使用加密演算法;需要驗證身份或完整性時,可搭配數位簽章。
理論上碰撞仍然存在(因為輸出空間有限而輸入無限),但對 SHA-256 等級的演算法,找到碰撞在目前計算能力下被視為不可行。這並不意味著可以永久依賴,密碼學標準會隨研究進展更新。
本地雜湊工具讓使用者選擇檔案或輸入文字,立即得到雜湊值,整個過程不離開裝置。這對驗證下載檔案或檢查文字是否一致特別方便。選擇演算法時,檔案校驗優先用 SHA-256;如果只是快速比較兩段文字是否相同,任何穩定的雜湊都可使用。
Wusper 的雜湊工具支援常見演算法並在瀏覽器本地執行。計算結果僅供驗證與學習使用。涉及高安全性需求的系統,應遵循最新的密碼學建議與專業實作。