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){}

欢迎进入我的微信公众号:










猜你喜欢

转载自blog.csdn.net/xhf_123/article/details/49931655