加密往往会伴随网络传输一起出现,以为理论上,不管数据通过任何形式网络传输都有有可能被截获,这就要求数据传输过程劲量保证安全,而加密技术真是解决数据安全的重要途径。在很多从事数据安全、网络应用的企业尤其看重开发人员加密技术的掌握程度。
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){}
欢迎进入我的微信公众号: