1. 程式人生 > >Android開發-對稱加密和非對稱加密

Android開發-對稱加密和非對稱加密

對稱加碼和非對稱加密

對稱加密
對稱加密是指:加密和解密使用同一個祕鑰,所以叫對稱加密,對稱加密只有一個祕鑰作為私鑰
常見的對稱加密演算法有:DES,AES

非對稱加密
非對稱加密是指:加密和解密使用不同的金鑰,一把作為公開的公鑰,一把作為私鑰,公鑰加密的資訊只有私鑰才能解密,私鑰加密的資訊只有公鑰才能解密
常見的非對稱加密演算法有:RSA

區別
對稱加密相對於非對稱加密,加解密的效率會高跟多,缺點在於金鑰的管理上,以及在非安全通道中通訊時,金鑰交換的安全不能得到保證,所以在實際網路中,會將兩個混合使用
例如針對C/S模型:
1.伺服器端計算出一對金鑰pub/pri,將公鑰公開,私鑰保密
2.客戶端請求伺服器時,拿到服務端的公鑰
3.客戶端通過對稱加密演算法得出一個對稱加密的金鑰X,然後用pub將X進行加密
4.客戶端將加密後的密文傳送給伺服器,伺服器通過私鑰解密得到金鑰X
5.然後兩端就通過對稱加密演算法,進行加解密

MD5

簡介
MD5:MessageDigestAlgorithm 5(資訊摘要演算法),是一種將字串經過一系列計算處理之後,得到一個32位的16進位制串,比如(ADAF1231A1B4AF12ADAF1231A1B4AF12),通常下載檔案時,可以使用MD5校驗,檢查檔案是否被修改過了
原理
MD5會首先將字串轉換成二進位制,然後對這些二進位制進行一系列非線性運算和移位操作,最終得出一個32位的16進位制串
特點

  • 不同的字串可能得到相同的MD串
  • 不可能,只有MD5串不能得到原始檔,因為MD5計算過程中有移位和非線性轉換,作為逆推代價很大
  • 比般情況,不管是大檔案還是小檔案,只要更改裡面的一個字串,MD5都會改變,因為在MD5的生成過程中每一個二進位制位,都會參與計算