java MD5加密关于中文不一致问题
2013-10-16 09:16
489 查看
public final class MD5 {
/**
* 默认构造方法
*/
private MD5() {
}
/**
* 获得MD5加密字符串
*
* @param source 源字符串
*
* @return 加密后的字符串
*
*/
public static String getMD5(String source) {
String mdString = null;
if (source != null) {
try {
//关键是这句
mdString = getMD5(source.getBytes("UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
return mdString;
}
/**
* 获得MD5加密字符串
*
* @param source 源字节数组
*
* @return 加密后的字符串
*/
public static String getMD5(byte[] source) {
String s = null;
char [] hexDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8',
'9', 'A', 'B', 'C', 'D', 'E', 'F'};
final int temp = 0xf;
final int arraySize = 32;
final int strLen = 16;
final int offset = 4;
try {
java.security.MessageDigest md = java.security.MessageDigest
.getInstance("MD5");
md.update(source);
byte [] tmp = md.digest();
char [] str = new char[arraySize];
int k = 0;
for (int i = 0; i < strLen; i++) {
byte byte0 = tmp[i];
str[k++] = hexDigits[byte0 >>> offset & temp];
str[k++] = hexDigits[byte0 & temp];
}
s = new String(str);
} catch (Exception e) {
e.printStackTrace();
}
return s;
}
}
/**
* 默认构造方法
*/
private MD5() {
}
/**
* 获得MD5加密字符串
*
* @param source 源字符串
*
* @return 加密后的字符串
*
*/
public static String getMD5(String source) {
String mdString = null;
if (source != null) {
try {
//关键是这句
mdString = getMD5(source.getBytes("UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
return mdString;
}
/**
* 获得MD5加密字符串
*
* @param source 源字节数组
*
* @return 加密后的字符串
*/
public static String getMD5(byte[] source) {
String s = null;
char [] hexDigits = {'0', '1', '2', '3', '4', '5', '6', '7', '8',
'9', 'A', 'B', 'C', 'D', 'E', 'F'};
final int temp = 0xf;
final int arraySize = 32;
final int strLen = 16;
final int offset = 4;
try {
java.security.MessageDigest md = java.security.MessageDigest
.getInstance("MD5");
md.update(source);
byte [] tmp = md.digest();
char [] str = new char[arraySize];
int k = 0;
for (int i = 0; i < strLen; i++) {
byte byte0 = tmp[i];
str[k++] = hexDigits[byte0 >>> offset & temp];
str[k++] = hexDigits[byte0 & temp];
}
s = new String(str);
} catch (Exception e) {
e.printStackTrace();
}
return s;
}
}
相关文章推荐
- 关于php MD5加密 与java MD5 加密结果不一致的问题
- JS和Java在对中文进行MD5加密时,不一致问题解决
- 彻底解决JAVA和.net MD5加密中文不一致问题
- JAVA关于中文乱码问题的解决方案与经验
- 关于java写进mysql中文乱码问题
- Java 关于中文乱码问题的解决方案与经验 (2)
- 关于java连接mysql出现中文乱码的问题
- 关于java 和 android 下获取指定时间是本年第几周不一致问题的解决方法
- 关于java中文乱码问题
- Java关于中文乱码问题的解决方案与经验
- 解决ASP.NET MD5加密中文结果和ASP不一致的问题
- 关于JAVA应用中文字体显示小方框的问题解决
- 尽管关于Java中文问题的讨论已经相当多了,但由于Java的相关技术标准繁多,面向Java的Web服务器、应用服务器以及JDBC数据库驱动等都没有官方的标准,所以Java应用在处理中文时所存在的问
- 关于java web中中文乱码问题
- 关于Java中文问题的几条分析原则
- [Java]关于中文编码问题
- 关于Java和MySQL中文字符编码问题
- 关于java web中get方法的解决中文乱码问题
- 关于中文编码问题及Java中的处理
- 文《关于c++与java中文乱码问题分析与解决》中一个bug分析