1. 程式人生 > >安卓中的對稱加密,非對稱加密,MD5加密的演算法

安卓中的對稱加密,非對稱加密,MD5加密的演算法

轉自:http://blog.csdn.net/fengkaungdewoniu/article/details/52846025

安卓中使用的加密演算法可以說有三種:對稱加密、非對稱加密,及MD5加密。

  • 對稱加密:

對稱加密又稱作私鑰加密。(舉例:家裡大門開門和鎖門用的是同一把鑰匙)加密和解密使用相同的金鑰。金鑰:在加密演算法當中,將明文轉換為密文,或者密文轉換為明文的時候,需要用到的引數。分為公鑰和私鑰。

常見的對稱加密演算法有:AES(wifi密碼)、DES(wifie密碼)、RC5(電視遙控器)
 * des: Data Encryption Standard
 * aes: Advanced Encryption Standard
 * 特點:加密速度比較快.可以加密比較大的檔案

對稱加密的特點:只有一把金鑰,如果金鑰暴露,檔案就會被暴露。

  • 非對稱加密 

需要一對金鑰,一個是公鑰(公開的金鑰),任何人都可以獲得;一個是私鑰,如果某個使用者得到了加密後的資訊,只能用該使用者的解密私鑰才能解密。如果知道了其中一個,並不能計算出另外一個,因此如果公開了一對金鑰中的一個,並不會危害到另外一個的祕密性質。
非對稱加密,好比我研製的毒藥,誰都可以購買我的毒藥去放毒,但解藥只有我自己才有。
公鑰是公開的,私鑰是保密的,單獨給指定使用者的;使用者得到了公鑰以後,對資訊進行加密,如果此時想解密的話,必須使用只屬於該使用者的私鑰才能解密。
有兩把鑰匙(金鑰對),公鑰和私鑰,公鑰的話給別人.私鑰自己儲存.

RSA加密演算法是最常用的非對稱加密演算法。

  • MD5加密

全稱是Message-Digest Algorithm 5,在90年代初由MIT的電腦科學實驗室和RSA Data Security Inc發明,經MD2、MD3和MD4發展而來。

它是哪種機密型別?根據特點而定
md5演算法可用於對一段資訊進行不可逆的變換運算,產生一個32位的字串。如果對輸入資訊作了任何形式的改變,對改變後的資訊再次進行MD5運算所產生的數字摘要,與改變前的內容所運算出的MD5數字摘要都是不同的。MD5不是加密,因為結果是不能恢復出原始資料的。

MD5加密的特點
MD5加密既不是對稱加密演算法,也不是非對稱加密演算法,因為它不可解密,只能通過匹配的方式間接解密。因此安全係數最高。

開發中如何使用MD5加密? MD5Utils工具類
MD5加密的過程:
1. 先將指定的字串轉換為一個16位的byte[]
2. 遍歷取出陣列中的每個byte元素
3. 將取出的byte值與255(0xff)做與運算(&)後得到一個255以內的數值
4. 將得到的數值轉換為16進位制的字串, 如果它只有一位, 在它的前面補0
5. 將生成的16個二位16進位制形式的字串連線起來, 它就是md5加密後的32位字串

  • 常用加密演算法介紹:

  • RSA加密

  1. 什麼是RSA加密?
RSA加密演算法是最常用的非對稱加密演算法。也是目前為止最安全的非對稱加密演算法。
特點:加密速度比慢一些,但是安全係數比較高。

祕鑰對的話需要程式生成.不能我們自己定義
加密/解密:公鑰加密-->私鑰解密
> public static byte[] encryptByPublicKey(byte[] data, String publicKey)`//公鑰加密
> public static byte[] decryptByPrivateKey(byte[] encryptedData, String privateKey) `//私鑰解密
加密/解密:私鑰加密-->公鑰解密
> public static byte[] encryptByPrivateKey(byte[] data, String privateKey) `//私鑰加密
> public static byte[] decryptByPublicKey(byte[] encryptedData, String publicKey)//公鑰解密
在實際開發中,都有相應的工具提供RsaUtils,不需要去操心演算法的內部實現原理(互質關係、尤拉函式、歐姆定理等)。這些都是數學家們花了幾十年搞出來的心血。


名字的來源
RSA是1977年由羅納德?李維斯特(Ron Rivest)、阿迪?薩默爾(Adi Shamir)和倫納德?奧德曼(Leonard Adleman)一起提出的。RSA就是他們三人姓氏開頭字母拼在一起組成的。