Android SDK 支持的加密算法


Android SDK 支持的加密算法


一、Android SDK 支持的加密算法

Android SDK 目前支持4種加密算法:MD5 ,SHA,HMAC,AES。其中,前面三種爲不可逆加密算法,AES,爲可逆加密算法。
       
下面介紹前面3種不可逆加密算法:

(1)MD5(信息-摘要算法)
用於文件校驗,不管文件大小,經過MD5後能夠生成唯一的MD5值

(2)SHA (安全散列算法)
數字簽名等密碼學應用中的重要工具。廣泛用於電子商務安全領域,較MD5 安全

(3)HMAC(散列消息鑑別碼,基於密鑰 hash算法認證協議)
消息鑑別碼鑑別原理:用公開函數和密鑰產生一個固定長度的值作爲認證標識。用這個標識鑑別消息的完整性。使用密鑰生成的一個固定大小的小數據塊,即MAC,並將其加入消息,然後傳輸。接收方利用發送方共享的密鑰進行識別認證。
    

二、加密算法分類

常見的加密算法可以分成三類,對稱加密算法,非對稱加密算法和Hash(散列)算法。

(1)對稱加密

指加密和解密使用相同密鑰的加密算法。
對稱加密算法的優點在於加解密的高速度和使用長密鑰時的難破解性。
假設兩個用戶需要使用對稱加密方法加密然後交換數據,則用戶最少需要2個密鑰並交換使用,如果企業內用戶有n個,則整個企業共需要n×(n-1) 個密鑰,密鑰的生成和分發將成爲企業信息部門的惡夢。

對稱加密算法的安全性取決於加密密鑰的保存情況,但要求企業中每一個持有密鑰的人都保守祕密是不可能的,他們通常會有意無意的把密鑰泄漏出去——   如果一個用戶使用的密鑰被入侵者所獲得,入侵者便可以讀取該用戶密鑰加密的所有文檔,如果整個企業共用一個加密密鑰,那整個企業文檔的保密性便無從談起。

常見的對稱加密算法:DES(Data Encrpytion Standard)、3DES、DESX、Blowfish、IDEA、RC4、RC5、RC6和AES(Adavanced Encrpytion Standard)
 
(2)非對稱加密

指加密和解密使用不同密鑰的加密算法,也稱爲公私鑰加密。
假設兩個用戶要加密交換數據,雙方交換公鑰,使用時一方用對方的公鑰加密,另一方即可用自己的私鑰解密。如果企業中有n個用戶,企業需要生成n對密鑰,並分發n個公鑰。由於公鑰是可以公開的,用戶只要保管好自己的私鑰即可,因此加密密鑰的分發將變得十分簡單。同時,由於每個用戶的私鑰是唯一的,其他用戶除了可以通過信息發送者的公鑰來驗證信息的來源是否真實,還可以確保發送者無法否認曾發送過該信息。

非對稱加密的缺點是加解密速度要遠遠慢於對稱加密,在某些極端情況下,甚至能比非對稱加密慢上1000倍。
常見的非對稱加密算法:RSA、ECC(移動設備用(橢圓曲線算法))、Diffie-Hellman、El Gamal、DSA(數字簽名用)

(3)Hash(散列)算法
Hash算法特別的地方在於它是一種單向算法,用戶可以通過Hash算法對目標信息生成一段特定長度的唯一的Hash值,卻不能通過這個Hash值重新獲得目標信息。因此Hash算法常用在不可還原的密碼存儲、信息完整性校驗等。
常見的Hash算法:MD2、MD4、MD5、HAVAL、SHA、SHA-1、HMAC、HMAC-MD5、HMAC-SHA1
     

 三、加密算法的選擇

(1)應該根據使用特點來確定,由於非對稱加密算法的運行速度比對稱加密算法的速度慢很多,當需要加密大量的數據時,建議採用對稱加密算法,提高加解密速度。

(2)對稱加密算法不能實現簽名,因此簽名只能非對稱算法。

(3)由於對稱加密算法的密鑰管理是一個複雜的過程,密鑰的管理直接決定着他的安全性,因此當數據量很小時,我們可以考慮採用非對稱加密算法。

(4)在實際的操作過程中,通常採用的方式是:採用非對稱加密算法管理對稱算法的密鑰,然後用對稱加密算法加密數據,這樣我們就集成了兩類加密算法的優點,既實現了加密速度快的優點,又實現了安全方便管理密鑰的優點。
     

發佈了40 篇原創文章 · 獲贊 1 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章