哈希算法(Hash Algorithm)是一種將任意長度的數據映射為固定長度的哈希值(Hash Value)的算法,廣泛應用于密碼學、數據完整性驗證、數據結構(如哈希表)和數字簽名等領域。
🧠 一、哈希算法的特點:
輸入任意,輸出固定長度
無論輸入數據大小如何,輸出的哈希值都是固定長度,如 MD5 輸出 128 位,SHA-256 輸出 256 位。快速計算
算法設計使得計算效率高,適合處理大量數據。雪崩效應
輸入的微小變動(哪怕一個字節)都會導致輸出的哈希值完全不同。抗碰撞性
很難找到兩個不同的輸入具有相同的哈希值。單向性(不可逆)
從哈希值無法反推出原始數據。
🔐 二、常見哈希算法
算法名稱 | 輸出長度 | 應用場景 | 安全性 |
---|---|---|---|
MD5 | 128 位 | 文件校驗、早期數字簽名 | 已被破解,不推薦用于安全場景 |
SHA-1 | 160 位 | SSL證書、Git系統 | 已被攻破,不推薦 |
SHA-256 | 256 位 | 數字簽名、區塊鏈 | 安全,廣泛使用 |
SHA-3 | 224/256/384/512 位 | 新一代標準 | 高安全性 |
BLAKE2 | 256 位等 | 替代 MD5/SHA 的新算法 | 快速且安全 |
CRC32 | 32 位 | 校驗和(非加密用途) | 不安全,僅用于校驗 |
🧪 三、應用舉例
數據完整性驗證
下載文件時附帶的
.md5
或.sha256
文件,用于驗證下載是否被篡改。
密碼存儲
系統不會保存明文密碼,而是保存密碼的哈希值,例如 bcrypt、scrypt(帶有加鹽)。
區塊鏈技術
比特幣等區塊鏈使用 SHA-256 對區塊信息進行哈希運算,實現防篡改。
哈希表(HashMap)
在編程中快速查找鍵值對,鍵通過哈希算法映射為數組下標。
🆚 哈希算法 vs 加密算法
特點 | 哈希算法 | 加密算法 |
---|---|---|
是否可逆 | 否(單向) | 是(可解密) |
主要用途 | 驗證、索引、簽名 | 數據保密傳輸 |
輸出長度 | 固定 | 可變 |