Android開發 加密技術

加密往往會伴隨網絡傳輸一起出現,以爲理論上,不管數據通過任何形式網絡傳輸都有有可能被截獲,這就要求數據傳輸過程勁量保證安全,而加密技術真是解決數據安全的重要途徑。在很多從事數據安全、網絡應用的企業尤其看重開發人員加密技術的掌握程度。

Android SDK 支持4種加密技術:MD5、SHA、HMAC、和AES。其中前三個是不可逆加密。AES是可逆加密算法。實際上,如果將Base64編碼表中的字符隨機打亂也屬於加密算法,而且是可逆加密。下面就開始介紹這幾種加密算法:

MD5(信息-摘要算法),廣泛用於加密和解密技術,常用於文件校正。不管文件有多大,經過MD5後都生成唯一的MD5值,就像現在的ISO校驗,都是MD5校驗。

SHA(安全散列算法),數字簽名等密碼學應用 重要工具,被廣泛的應用與電子商務等信息安全領域。雖然,SHA與MD5通過碰撞算法都被破解了,但是SHA仍然是公認的安全加密算法,較MD5更爲安全。

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

MD5算法:

//source參數是待加密的字符串,encrypt_MD5方法返回加密後的結果

public String encrypt_MD5(String sourse) throw Exception

{

MessageDiagest md5 = MessageDiagest.getInstanse("MD5");

md5.update(source.getBytes());

return Base64.encodeToString(md5.digest(), Base64.DRFAULT);

}

SHA算法:

public String encrypt_SHA(String sourse) throw Exception

{

MessageDiagest sha= MessageDiagest.getInstanse("SHA");

sha.update(source.getBytes());

return Base64.encodeToString(sha.digest(), Base64.DRFAULT);

}

HMAC算法:

public static String initMacKey( ) throw Exception

{

KeyGenerator keyGenerator = KeyGenerator.getInstanse("HMAC");

SecretKey secretKey =keyGenerator.generateKey();

return Base64.encodeToString(secretKey.getEncoded(), Base64.DRFAULT);

}

//HMAC加密

public static String encrypt_HMAC(String source , String key ) throw Exception

{

SecretKey secretKey = new SecretKeyKeySpec(Base64.decode(key,Base64.DRFAULT),"HMac");

Mac mac = Mac.getInstance(secretKey.getAlgorithm());

return Base64.encodeToString(mac.doFinal(Source.getBytes()), Base64.DRFAULT);

}

// 使用HMAC算法對數據進行加密

try{

String key = initMacKey();

String result = encrypt_HMAc("Android",key);

}catch(Exception e){}

歡迎進入我的微信公衆號:










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