Android开发 加密技术

原创 2015年11月19日 18:27:25

加密往往会伴随网络传输一起出现,以为理论上,不管数据通过任何形式网络传输都有有可能被截获,这就要求数据传输过程劲量保证安全,而加密技术真是解决数据安全的重要途径。在很多从事数据安全、网络应用的企业尤其看重开发人员加密技术的掌握程度。

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

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










版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

iOS开发常用的加密技术

iOS开发常用的加密技术我胡汉三又回来了啦!时隔几月没有更博客了,我自己都受不鸟自己啦。在这几个月里经历了很多杂七杂八的事儿,不过话说回来,再怎么忙都不应该中断学习的步伐,再怎么忙都不能成为博客停更的...
  • dhfsh
  • dhfsh
  • 2017-03-07 14:30
  • 74

Java加密技术(二)

接下来我们介绍对称加密算法,最常用的莫过于DES数据加密算法。  DES  DES-Data Encryption Standard,即数据加密算法。是IBM公司于1975年研究成功并公开发表的。...

Java加密技术(十)Java证书体系的实现

在Java 加密技术(九)中,我们使用自签名证书完成了认证。接下来,我们使用第三方CA签名机构完成证书签名。      这里我们使用thawte提供的测试用21天免费ca证书。      1.要在...

Java加密技术(九)

原文地址: http://snowolf.iteye.com/blog/397693 在Java加密技术(八)中,我们模拟了一个基于RSA非对称加密网络的安全通信。现在我们深度了解一下现有的安全网络...

shiro身份验证入门结合shiro的MD5加密技术自定义Realm-简单Demo

这个Demo,只是一个简单的shiro身份验证部分,不涉及到授权部分。算是shiro入门。 具体的shiro介绍就不说了,官网和草根们在网上都分享了很多,原理自己去看吧。这里直接写代码了。 第一:准备...

PHP的几种常见的加密技术

一、Md5()加密算法 单项加密,无法解密。 md5(string $str[, bool $raw_output = false]);  //计算md5散列值 对于可选参数raw_output。如果...

【科普】DENUVO加密技术

背景这几天在浏览一些游戏方面的技术资料的时候,无意间看到一些比较火热的消息,有关于游戏破解与加密的。由于是新年期间,一些大的厂商要放出新作,这就涉及到“钱”的问题了,我相信,在我们国人的眼中,花钱买游...

Java加密技术(四)

原文地址: http://snowolf.iteye.com/blog/381767 接下来我们介绍典型的非对称加密算法——RSA RSA     这种算法1978年就出现了,它是第一个...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)