转自: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就是他们三人姓氏开头字母拼在一起组成的。

安卓中的对称加密,非对称加密,MD5加密的算法相关推荐

  1. md5加密数据表中的密码php,JSP_使用MD5加密数据库中的用户密码(一),我们知道,现在网络上一般的 - phpStudy...

    使用MD5加密数据库中的用户密码(一) 我们知道,现在网络上一般的网站,稍微完善一点的,往往都需要用户先注册,提供诸如电子邮件.账号.密码等信息以后,成为网站栏目的注册用户,才可以享受网站一些特殊栏目 ...

  2. python2 md5加密_Python的加密方式:MD5加密

    Python的加密方式:MD5加密 1.MD5加密 MD5加密是常用的一种加密方式,不可逆,在日常的字符串加密,请求报文加密中经常用到. Python使用MD5加密使用的是Python自带的模块has ...

  3. Android常用加密手段之MD5加密(字符串加密和文件加密)

    前言 安全问题一直伴随着互联网的成长,如何有效地保护应用程序的数据是每一个开发者都应该考虑和努力的事情.这篇文章介绍Android平台上常用的加密方式之MD5加密. MD5 MD5即Message-D ...

  4. 【密码加密】【MD5加密】【盐值加密】

    加密方式 MD5加密 盐值加密 实际开发中的应用 MD5加密 MD5加密方式,可以对文件或者值进行读取加密,并且这个密码是不可逆的,也就是不能被破解 利用第三方类库实现加密 //常用的MD5加密 St ...

  5. Java 加密解密 对称加密算法 非对称加密算法 MD5 BASE64 AES RSA

    [最简单的加密] 1.简单的概念 明文:加密前的信息 密文:机密后的信息 算法:加密或解密的算法 密钥:算法使用的钥匙(读作miyao,正确应该是miyue,但是大家都读miyao) 2.简单的例子 ...

  6. 加密(对称、非对称),签名(算法),指纹和指纹算法,认证证书CA

    https://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html https://blog.csdn.net/gdhgr/artic ...

  7. Java 开发中常用的 4 种加密方法。MD5加密工具类测试 base64加密工具类测试 SHA加密工具类测试 BCrypt加密工具类测试

    一.工具类 1, md5加密工具类 2, base64加密工具类 3, Bcrypt工具类 二.加密测试 MD5加密测试 base64加密测试 SHA加密测试 BCrypt加密测试 一.工具类 1, ...

  8. php中常用的几种加密方式以及md5加密漏洞以及解决方案

    一.md5(php中的最常用的加密方式) 在用md5进行加密时,至少要将md5加密两次以上(包含两次),或者再加上盐进行加密 二.password_hash(php5.5以上版本才可以使用) 官方说明 ...

  9. 【安卓开发 】Android初级开发(七)MD5加密

    //MD5加密public String encrypt(String raw){String md5Str = raw;try {MessageDigest md = MessageDigest.g ...

最新文章

  1. 又一个巨头决定彻底放弃微服务,全面拥抱K8S!
  2. Java访问控制修饰符作用域
  3. Asp.Net+SqlServer+EntityFrameWork(项目问题总结)
  4. effective c++ 学习
  5. python的实例属性和静态属性表_Python:类属性,实例属性,私有属性与静态方法,类方法,实例方法...
  6. Hadoop生态Zookeeper安装
  7. java学习 类变量 类方法_这篇文章主要介绍了JAVA类变量及类方法代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下类变量(...
  8. Jquery获取iframe中的元素
  9. Neo4j数据导入与可视化
  10. 【去水印】最简单的百度图片去水印
  11. Word、Excel操作技巧大全
  12. 微信开发工具新版本黑屏的解决办法
  13. 苹果安卓APP下载地址合并为一个二维码
  14. 51单片机数码管交通灯倒计时c语言,51单片机数码管倒计时模拟交通灯汇编程序...
  15. 线性回归算法梳理——Test1
  16. 无线网主域名服务器,主域名服务器和网关的关系
  17. 监控摄像头的测试方法
  18. 前端程序员Vue开发经验总结
  19. SY-REPID 和 SY-CPROG使用详解及其区别
  20. JAVA毕业设计宠物店管理系统设计与实现计算机源码+lw文档+系统+调试部署+数据库

热门文章

  1. [ 数据集 ] COCO 数据集介绍
  2. 学习笔记之——Python中类和对象的理解
  3. jarvis oj Web By Assassin
  4. perl与c相互调用
  5. 人工学习之预测2023年考研英语答案分布
  6. SecureCRT连接后乱码问题!!!
  7. C语言-用栈实现表达式求值
  8. 深度洞见|品牌如何布局微信生态,玩转私域运营?
  9. 如何在linux下查看服务器的型号
  10. LLVM WEEKLY系列停止转载