Android-Java Md5加密技术
来源:互联网 发布:c语言编程步骤 编辑:程序博客网 时间:2024/04/19 09:02
什么是MD5加密
百度给出的解释是:MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的Ronald L. Rivest开发出来,经MD2、MD3和MD4发展而来。在一些初始化处理后,MD5以512位分组来处理输入文本,每一分组又划分为16个32位子分组。算法的输出由四个32位分组组成,将它们级联形成一个128位散列值。
MD5 作用
MD5在论坛上、软件发布时经常用,是为了保证文件的正确性,防止一些人盗用程序,加些木马或者篡改版权,设计的一套验证系统。每个文件都可以用MD5验证程序算出一个固定的MD5码来。 MD5所有加密后的数据长度都是32位,且每位都是由16进制的数字代表,只需对字符串做简单的修改,得到的MD5数据都是大不相同的。对于一些必要重要的密码或者签名,我们都需要通过MD5加密后保存,MD5具有不可逆性,不能被反解码,然而有一些公司通过建立数据库存储MD5的各种值来实现解码,但是其数据库包含数据有限,依然不能做到完全解码,我们只需要对MD5加密后进行处理能很容易的使其不能被解码。
MD5加强处理
实现方法有:
1.对已经进行过MD5加密的数据再次进行MD5加密。
2.对原有数据加一串其他字符来使其变得复杂也可以做到不能被解码。(所加字符串一般是已经协商好的)
MD5加密的优点
1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。 2、容易计算:从原数据计算出MD5值很容易。 3、不可逆:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别,且不可逆。 4、弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。 5、强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。
MD5加密原理
先将字符串转换成字节数组把数组中每个字节拿出来与0xFF相与将其所得值转换成int型,得到一个16组的数据,每组数据都占两位,当然得到的数据可能不是32位,但是MD5的数据严格要求所得数据必须是32位,所以我们会遍历数组把不是两位的数据其前面加上一个0使其成为两位。这样我们就一定能的到一个32位的数据了。
private static String createMD5(@NonNull String str) { try { //1.指定加密算法类型 MessageDigest digest = MessageDigest.getInstance("MD5"); //2.将需要加密的字符串转换成byte数组 byte[] hash = digest.digest(str.getBytes("UTF-8")); //3.拼接数据 StringBuffer stringBuffer = new StringBuffer(); StringBuilder hex = new StringBuilder(hash.length * 2); for (byte b : hash) { int i = b&0xFF; //int类型的i需要转换成16进制 String hexString = Integer.toHexString(i); if(hexString.lenth()<2) { hexString = "0"+hexString; } stringBuffer.append(hexString); } hex.append(Integer.toHexString(b & 0xFF)); } catch (NoSuchAlgorithmException e) { //e.printStackTrace(); throw new RuntimeException("Huh, MD5 should be supported?", e); } catch (UnsupportedEncodingException e) { //e.printStackTrace(); throw new RuntimeException("Huh, UTF-8 should be supported?", e); } return stringBuffer.toString(); }
- Android-Java Md5加密技术
- Android(Java):md5加密
- JAVA加密技术-----MD5 与SHA 加密
- (Android、Java) MD5加密方法
- Android中应用md5加密技术
- Java MD5加密技术简介及其源代码
- Java加密技术之—MD5
- Java加密解密技术系列之MD5
- java 加密技术AES、MD5、RSA
- java加密解密技术(2) 单向加密MD5
- MD5加密技术
- 关于MD5加密技术
- MD5加密技术
- md5加密技术详解
- MD5 加密技术
- MD5加密技术
- MD5加密技术
- MD5加密技术
- 公交轨迹数据处理(1) 数据时序可视化
- 有没有朋友可以共享一下会员账号的呀~
- oracle 增加日志组和日志文件
- 【Wannafly挑战赛1】A Treepath 【树形DP】or 【黑白染色 找规律】
- POJ-3268 Silver Cow Party
- Android-Java Md5加密技术
- App数据分析到底要分析什么
- Flume之Failover和Load balancing原理及实例
- 【python 处理亿级数据】使用 Pandas 处理亿级数据
- 局部内部类里面的方法如何调用类所在方法里面的变量
- ajax跨域请求传输cookie
- 宽字节SQL注入原理
- java 设计模式
- [2017.12.02-03]多线程