雜湊 (Hash) 與加密 (Encryption) 的比較
在資訊安全的領域中,雜湊 (Hash) 和加密 (Encryption) 是兩種常用於保護資料的技術,但它們的目的和運作方式有很大的不同。最關鍵的區別在於:加密是可逆的,而雜湊是不可逆的。
加密 (Encryption)
加密是將資料(稱為明文)透過一個演算法和一個金鑰 (key) 轉換成無法直接讀取的格式(稱為密文)。這個過程是可逆的,只要擁有正確的金鑰,就可以將密文解密還原成明文。
加密主要分為兩種類型:
- 對稱加密 (Symmetric Encryption): 加密和解密使用同一把金鑰。這種方式速度快,但金鑰的傳輸和管理是一個挑戰。
- 非對稱加密 (Asymmetric Encryption): 使用一對公鑰和私鑰。公鑰可以公開給任何人,用於加密資料;而私鑰則由擁有者保管,用於解密資料。這種方式更安全,但速度較慢。
流程:
明文 -> 加密 (使用金鑰) -> 密文
密文 -> 解密 (使用金鑰) -> 明文
雜湊 (Hashing)
雜湊是將任意長度的資料透過一個雜湊函式 (Hash function) 轉換成一個固定長度的雜湊值 (Hash value)。這個過程是單向的、不可逆的,無法從雜湊值反推出原始資料。
特性:
- 不可逆性: 無法從雜湊值還原成原始資料。
- 唯一性: 不同的輸入資料應該產生不同的雜湊值。如果兩個不同的輸入產生了相同的雜湊值,就稱為碰撞 (Collision)。一個好的雜湊函式應該要能有效地避免碰撞。
- 固定長度: 無論輸入的資料多長,輸出的雜湊值長度都是固定的。
流程:
明文 -> 雜湊函式 -> 雜湊值
何時使用?
- 加密: 當您需要在未來某個時間點還原資料時,例如傳輸敏感資料(信用卡號碼、個人身份資訊)或儲存需要被讀取的機密檔案。
- 雜湊: 當您只需要驗證資料的完整性或真實性,而不需要知道原始資料時,例如儲存使用者密碼、驗證檔案是否被竄改。
總結
特性 | 加密 (Encryption) | 雜湊 (Hashing) |
---|---|---|
可逆性 | 可逆 | 不可逆 |
金鑰 | 需要 | 不需要 |
輸出長度 | 不固定 | 固定 |
用途 | 保護資料內容,並在需要時還原 | 驗證資料完整性、儲存密碼 |