加密、編碼、雜湊的區別為何?

2023年3月3日

💎 加入 E+ 成長計畫 與超過 250+ 位軟體工程師一起在社群中成長,並且獲得更深入、系統性軟體工程內容

編碼

編碼並不會修改資料、也沒有任何加密的效果,單純就是換個方式來呈現,最有名的例子是摩斯編碼:

摩斯編碼
摩斯編碼
圖片來源:https://en.wikipedia.org/wiki/Morse_code

而在軟體開發上最常見的編碼有

  • Base64 編碼
  • URL 編碼
  • ASCII
  • 霍夫曼編碼

下方以 Base64 為例:

Base64

Base64 編碼是一種將二進制數據轉換為 ASCII 文本的方法,使得它可以輕鬆地在網絡上傳輸或存儲在文本文件中。它將二進制數據表示為 64 個可打印字符,包括字母、數字和符號。編碼過程一次處理三個字節的數據,並將它們轉換為四個可打印字符。這使得它成為在只支持文本數據的網絡上傳輸二進制數據的有用編碼方案,例如電子郵件。反向過程,將 Base64 字符串解碼回其原始二進制數據也很簡單。

Base64 encode
Base64 encode

加密

加密會用一組密鑰針對數據作加密,若需要還原回加密的數據,也需要透過密鑰才能夠解密回來,而加密又分成對稱式加密以及非對稱式加密,以下各別來介紹:

對稱式加密

對稱式加密
對稱式加密
圖片來源:https://www.ssl2buy.com/wiki/symmetric-vs-asymmetric-encryption-what-are-differences

對稱式加密(Symmetric Encryption)使用單個密鑰進行加密和解密。因此在對稱式加密的訊息在傳遞時,寄件者與收件者的密鑰是同一個,而要如何安全地將密鑰傳給對方,確保過程中不會被攔截,成為最大的問題。常見的演算法為 AES、DES 和 Blowfish 等。

非對稱式加密

非對稱式加密
非對稱式加密
圖片來源:https://www.ssl2buy.com/wiki/symmetric-vs-asymmetric-encryption-what-are-differences

非對稱式加密(Asymmetric Encryption)在創建時,會有兩把密鑰:公鑰和私鑰。公鑰是公開的,可以被任何人獲得,而私鑰必須保密,只有擁有者才能使用。核心原理是:公鑰可以解開私鑰簽名的檔案,而私鑰可以解開公鑰加密的檔案。

因為非對稱式加密的複雜性高,因此加密速度會比對稱式加密慢得多,但對於敏感數據的保護提高了更高的安全性。常見的非對稱式加密演算法包括 RSA、Elliptic Curve Cryptography (ECC) 和 Diffie-Hellman 等。

雜湊

雜湊是一種將任意長度的數據,映射到固定長度的數字特徵碼的算法。以 md5 為例,它會根據某個雜湊函數將檔案內容,計算出一個長度 128 bit 的雜湊值,因此若是兩個不同的檔案,則雜湊值會不相等。

雜湊
雜湊
圖片來源:https://www.technologycrowds.com/2019/09/how-to-compute-md5-hash-message-digest.html

而雜湊值是無法還原回原本數據的,比較常使用在數據校驗、數字簽名、數據存儲索引等。

🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們