Android网络传输中的加密算法:MD5加密方法
2016-08-04 15:14
344 查看
MD5是网络传输中最常用的算法,了解这个算法原理后就能大致知道加密是怎么一回事了。
MD5是不可逆的,只能加密而不能解密。比如明文是yanzi1225627,得到MD5加密后的字符串是:14F2AE15259E2C276A095E7394DA0CA9
但不能由后面一大串倒推出yanzi1225627.因此可以用来存储用户输入的密码在服务器上。现在下载文件校验文件是否中途被篡改也是用的它,原理参见:http://blog.csdn.net/forgotaboutgirl/article/details/7258109 无论在Android上还是pc上用java实现MD5都比较容易,因为java已经把它做到了java.security.MessageDigest里。下面是一个MD5Util.java类:
package org.md5.util;
import java.security.MessageDigest;
public class MD5Util {
public final static String getMD5String(String s) {
char hexDigits[] = { '0', '1', '2', '3', '4',
'5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F' };
try {
byte[] btInput = s.getBytes();
//获得MD5摘要算法的 MessageDigest 对象
MessageDigest mdInst = MessageDigest.getInstance("MD5");
//使用指定的字节更新摘要
mdInst.update(btInput);
//获得密文
byte[] md = mdInst.digest();
//把密文转换成十六进制的字符串形式
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
return new String(str);
}
catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
通过下面两行代码调用:
/************************************MD5加密测试*****************************/
String srcString = "yanzi1225627";
System.out.println("MD5加密后 = " + MD5Util.getMD5String(srcString));
MD5是不可逆的,只能加密而不能解密。比如明文是yanzi1225627,得到MD5加密后的字符串是:14F2AE15259E2C276A095E7394DA0CA9
但不能由后面一大串倒推出yanzi1225627.因此可以用来存储用户输入的密码在服务器上。现在下载文件校验文件是否中途被篡改也是用的它,原理参见:http://blog.csdn.net/forgotaboutgirl/article/details/7258109 无论在Android上还是pc上用java实现MD5都比较容易,因为java已经把它做到了java.security.MessageDigest里。下面是一个MD5Util.java类:
package org.md5.util;
import java.security.MessageDigest;
public class MD5Util {
public final static String getMD5String(String s) {
char hexDigits[] = { '0', '1', '2', '3', '4',
'5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F' };
try {
byte[] btInput = s.getBytes();
//获得MD5摘要算法的 MessageDigest 对象
MessageDigest mdInst = MessageDigest.getInstance("MD5");
//使用指定的字节更新摘要
mdInst.update(btInput);
//获得密文
byte[] md = mdInst.digest();
//把密文转换成十六进制的字符串形式
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) {
byte byte0 = md[i];
str[k++] = hexDigits[byte0 >>> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
return new String(str);
}
catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
通过下面两行代码调用:
/************************************MD5加密测试*****************************/
String srcString = "yanzi1225627";
System.out.println("MD5加密后 = " + MD5Util.getMD5String(srcString));
相关文章推荐
- Android网络传输中必用的两个加密算法:MD5 和 RSA 及Base64加密总结
- Android网络传输中必用的两个加密算法:MD5 和 RSA 及Base64加密总结
- Android网络传输中必用的两个加密算法:MD5 和 RSA (附java完成测试代码)
- Android网络传输中必用的两个加密算法:MD5 和 RSA (附java完毕測试代码)
- Android网络传输中必用的两个加密算法:MD5 和 RSA (附java完成测试代码)
- Android网络传输中必用的两个加密算法:MD5 和 RSA (附java完成测试代码)
- Android网络传输中必用的两个加密算法:MD5 和 RSA (附java完成测试代码)
- Android网络传输中必用的两个加密算法:MD5 和 RSA
- Android网络传输中必用的两个加密算法:MD5 和 RSA (附java完成测试代码)
- Android网络传输中必用的两个加密算法:MD5 和 RSA
- 安卓学习笔记---Android网络传输中必用的两个加密算法:MD5 和 RSA
- Android网络传输中必用的两个加密算法:MD5 和 RSA
- Android网络传输中必用的两个加密算法:MD5 和 RSA (附java完成测试代码)
- Android网络传输中必用的两个加密算法:MD5 和 RSA (附java完成测试代码)
- Android网络传输中必用的两个加密算法:MD5 和 RSA (附java完成测试代码)
- 密码存储以及网络传输的加密算法-Base64加密加盐后MD5的加密
- Android网络传输中必用的两个加密算法:MD5 和 RSA
- Android网络传输中必用的两个加密算法:MD5 和 RSA (附代码)
- Android网络传输中必用的两个加密算法:MD5 和 RSA (附java完成测试代码)
- Android网络传输中必用的两个加密算法:MD5 和 RSA (附java完成测试代码)