安卓中的对称加密,非对称加密,MD5加密的算法

转自:http://blog.csdn.net/fengkaungdewoniu/article/details/52846025


安卓中使用的加密算法可以说有三种:对称加密、非对称加密,及MD5加密。

  • 对称加密:

对称加密又称作私钥加密。(举例:家里大门开门和锁门用的是同一把钥匙)加密和解密使用相同的密钥。密钥:在加密算法当中,将明文转换为密文,或者密文转换为明文的时候,需要用到的参数。分为公钥和私钥。

常见的对称加密算法有:AES(wifi密码)、DES(wifie密码)、RC5(电视遥控器)
 * des: Data Encryption Standard
 * aes: Advanced Encryption Standard
 * 特点:加密速度比较快.可以加密比较大的文件

对称加密的特点:只有一把密钥,如果密钥暴露,文件就会被暴露。

  • 非对称加密 

需要一对密钥,一个是公钥(公开的密钥),任何人都可以获得;一个是私钥,如果某个用户得到了加密后的信息,只能用该用户的解密私钥才能解密。如果知道了其中一个,并不能计算出另外一个,因此如果公开了一对密钥中的一个,并不会危害到另外一个的秘密性质。
非对称加密,好比我研制的毒药,谁都可以购买我的毒药去放毒,但解药只有我自己才有。
公钥是公开的,私钥是保密的,单独给指定用户的;用户得到了公钥以后,对信息进行加密,如果此时想解密的话,必须使用只属于该用户的私钥才能解密。
有两把钥匙(密钥对),公钥和私钥,公钥的话给别人.私钥自己保存.

RSA加密算法是最常用的非对称加密算法。

  • MD5加密

全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2、MD3和MD4发展而来。

它是哪种机密类型?根据特点而定
md5算法可用于对一段信息进行不可逆的变换运算,产生一个32位的字符串。如果对输入信息作了任何形式的改变,对改变后的信息再次进行MD5运算所产生的数字摘要,与改变前的内容所运算出的MD5数字摘要都是不同的。MD5不是加密,因为结果是不能恢复出原始数据的。

MD5加密的特点
MD5加密既不是对称加密算法,也不是非对称加密算法,因为它不可解密,只能通过匹配的方式间接解密。因此安全系数最高。

开发中如何使用MD5加密? MD5Utils工具类
MD5加密的过程:
1. 先将指定的字符串转换为一个16位的byte[]
2. 遍历取出数组中的每个byte元素
3. 将取出的byte值与255(0xff)做与运算(&)后得到一个255以内的数值
4. 将得到的数值转换为16进制的字符串, 如果它只有一位, 在它的前面补0
5. 将生成的16个二位16进制形式的字符串连接起来, 它就是md5加密后的32位字符串

  • 常用加密算法介绍:
  • RSA加密

  1. 什么是RSA加密?
RSA加密算法是最常用的非对称加密算法。也是目前为止最安全的非对称加密算法。
特点:加密速度比慢一些,但是安全系数比较高。

秘钥对的话需要程序生成.不能我们自己定义
加密/解密:公钥加密-->私钥解密
> public static byte[] encryptByPublicKey(byte[] data, String publicKey)`//公钥加密
> public static byte[] decryptByPrivateKey(byte[] encryptedData, String privateKey) `//私钥解密
加密/解密:私钥加密-->公钥解密
> public static byte[] encryptByPrivateKey(byte[] data, String privateKey) `//私钥加密
> public static byte[] decryptByPublicKey(byte[] encryptedData, String publicKey)//公钥解密
在实际开发中,都有相应的工具提供RsaUtils,不需要去操心算法的内部实现原理(互质关系、欧拉函数、欧姆定理等)。这些都是数学家们花了几十年搞出来的心血。


名字的来源
RSA是1977年由罗纳德?李维斯特(Ron Rivest)、阿迪?萨默尔(Adi Shamir)和伦纳德?奥德曼(Leonard Adleman)一起提出的。RSA就是他们三人姓氏开头字母拼在一起组成的。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值