1. 程式人生 > >四、Android安全機制之資料加密

四、Android安全機制之資料加密

    MD5,全名Message Digest Algorithm 5 ,中文名為訊息摘要演算法第五版,一種不可逆的hash演算法,常用於只需加密無需解密的資料上,比如使用者密碼,也常用來保證資料的完整性,因為資料被篡改後,其加密後的MD5也會隨之改變(不考慮碰撞的情況下),對比篡改前的MD5可確定資料是否完整;

2、RSA

    非對稱加密演算法,RSA的安全性依賴於大數的分解,公鑰和私鑰都是兩個大素數(大於100的十進位制位)的函式。公鑰對資料進行加密後傳輸,接收方用私鑰進行解密,而從一個公鑰和密文推斷出明文的難度等同於分解兩個大素數的積。由於進行的都是大數計算,使得RSA最快的情況也比DES慢上100倍,無論是軟體還是硬體實現。速度一直是RSA的缺陷。一般來說只用於少量資料加密。

3、AES

    對稱加密演算法,此加密方式最大的威脅在於金鑰的儲存和傳輸安全,所以一般採用隨機動態金鑰和非對稱加密演算法RSA協商金鑰,Android客戶端實現步驟如下:

①.客戶端隨機生成AES金鑰;

②.利用RSA公鑰加密AES金鑰並傳至服務端用對應私鑰解密,至此,服務端確認了此次互動的AES金鑰;

③.雙方已確認了AES金鑰,接下來客戶端直接用這個金鑰加密傳輸即可。

4、異或

    常用的簡單可逆資料加密方式,明文與金鑰進行異或操作得到密文,密文與金鑰進行一次異或操作則還原明文。

5、Https

    Https是在Http基礎上加入了TLS/SSL協議(TLS是SSL是升級版),負責身份驗證(證書認證)、資訊加密和完整性校驗(數字摘要)的安全功能。

它們的區別如下:

1、https協議需要到ca申請證書,一般免費證書很少,需要交費,而自簽名證書可用keytool生成,但需要客戶端新增信任,否則會報SSLHandshakeException異常。

2、http是超文字傳輸協議,資訊是明文傳輸,https 則是具有安全性的SSL/TSL加密傳輸協議。

3、http和https使用的是完全不同的連線方式,用的埠也不一樣,前者是80,後者是443。

4、http的連線很簡單,是無狀態的;HTTPS協議是由SSL/TSL+HTTP協議構建的可進行加密傳輸、身份認證的網路協議,比http協議安全。

證書內容及驗證:

    證書包含以下資訊:申請者公鑰、申請者的組織資訊和個人資訊、簽發機構CA的資訊、有效時間、證書序列號等資訊的明文,同時包含一個簽名;

    這個簽名的產生演算法:首先,使用雜湊函式計算公開的明文資訊的資訊摘要,然後,採用CA的私鑰對資訊摘要進行加密,密文即簽名。

    客戶端讀取證書中的相關的明文資訊,採用相同的雜湊函式計算得到資訊摘要,然後,利用對應CA的公鑰解密簽名資料,對比證書的資訊摘要,如果一致,則可以確認證書的合法性,即公鑰合法;

    總的來說,Https的一個比較概括的流程為如下三步:

    以上資料加密演算法的Java實現可移至以下連結檢視→