編碼、摘要、加密


1、編碼、摘要、加密的區別:

相同點:

  三種方式都是通過某種公開的算法將原始信息進行編碼 /加密

不同點:

  編碼:將數據轉化成某種固定的格式的編碼信息,方便不同系統間的傳輸,通過解碼編碼信息可以得到原始信息

  哈希(又稱為摘要、散列):驗證信息的唯一性,不能通過哈希值還原原始信息

  加密:加密傳輸信息,保證信息的安全性,通過密鑰和密文可以還原原始信息

 

編碼、哈希、加密的區別:經常看到有人混淆這幾個概念,把 md5、sha256 甚至還有 Base64 當作加密算法,弄不清楚摘要、編碼、加密的區別,下面就這幾個概念結合幾個例子來區分以下。

編碼:

編碼本質上是信息形式的轉化。編碼的目的不是為了加密信息,是將消息轉化成統一的格式,方便在不同系統之中傳輸。例如最常見的ASCII字符編碼。由於網絡上只能傳輸二進制數據,任何數據如果想要經由網絡傳輸,就必須先轉化成二進制,ASCII 提供了一個將A、B、C等字母轉化為二進制的規則。

信息—>編碼—>二進制—>解碼—>信息

通過解碼可以還原原始信息

例子:ASCII, Unicode, URL Encoding, Base64等

摘要(哈希):

摘要的目的是為了校驗信息的完整性,保證信息在傳輸過程中不被篡改。例如你在網絡上需要下載一個非官方論壇軟件,但又擔心軟件被第三方篡改,可以將該軟件的md5值和官方下載的md5值進行對比,如果一致,則可放心使用。摘要算法有如下幾個特點:

  輸入相同時,輸出一致;輸入不同時,輸出不同。通過輸出,不能計算出輸入 對輸入的任何細微修改,都會導致完全不同的輸出。

  由於以上特性,摘要也常被用來給密碼加密,不過由於計算機運算能力的提升以及越來越豐富的破解手段,已不建議使用摘要算法來給密碼加密。

  通過摘要信息不能還原原始信息。

例子:md5, sha系列

加密:

加密是為了保證數據安全傳輸,使得其他人不能獲取的具體信息內容。例如你想給某人發送一封密信,或通過互聯網給人發送密碼,這些對隱秘性要求比較強的事情,就需要對信息進行加密。

  加密的專注點不在可用性上,這點和編碼有明顯的區別。加密是可逆的,明文 + 秘鑰 = 加密信息

  加密又分為對稱加密和非對稱加密,區別在於在加密和解密信息時秘鑰是不是同一個。

  加密信息能通過密鑰被還原為原始信息

對稱加密:DES, AES

非對稱加密: RSA。

 

2、java中的編碼/解碼 、加密/解密的代碼:

  詳見代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM