加密往往會伴隨網絡傳輸一起出現,以爲理論上,不管數據通過任何形式網絡傳輸都有有可能被截獲,這就要求數據傳輸過程勁量保證安全,而加密技術真是解決數據安全的重要途徑。在很多從事數據安全、網絡應用的企業尤其看重開發人員加密技術的掌握程度。
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){}
歡迎進入我的微信公衆號: