package com.liujun.util;
import java.security.MessageDigest;
/**
* MD5加密、匹配工具
* @author asus
*
*/
public class MD5Util {
//十六进制下数字到字符的映射数组
private final static String[] hexDigits={"0", "1", "2", "3", "4",
"5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};
/**
* 将一个字节装换成十六进制形式的字符串
* @param b 十六进制字节
* @return 十六进制字符串
*/
private static String byteToHexStr(byte b){
int n=b;
if(n<0){
n=256+n;
}
int d1=n/16;
int d2=n%16;
return hexDigits[d1]+hexDigits[d2];
}
/**
* 将字节数组转换成十六进制字符串
* @param bytes 字节数组
* @return 十六进制字符串
*/
private static String byteArrayToHexStr(byte[] bytes){
StringBuffer sb=new StringBuffer();
for (int i = 0; i < bytes.length; i++) {
sb.append(byteToHexStr(bytes[i]));
}
return sb.toString();
}
/**
* 对字符串进行MD5加密
* @param originStr 原始密码
* @return MD5加密密码串
*/
public static String encodeToMd5Str(String originStr){
if (originStr!=null) {
try {
//创建MD5算法信息
MessageDigest messageDigest=MessageDigest.getInstance("MD5");
//将原始密码加密转换成MD5字节数组
byte[] md5Bytes=messageDigest.digest(originStr.getBytes());
//将加密后的字节数组转换成字符串
String resultStr=byteArrayToHexStr(md5Bytes);
//转换成大写
return resultStr.toUpperCase();
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
/**
* 最字符串进行MD5密码匹配
* @param md5Str
* @param originStr
* @return
*/
public static boolean validatePassword(String md5Str,String originStr){
if (md5Str.equals(encodeToMd5Str(originStr))) {
return true;
}else {
return false;
}
}
}
package com.liujun.main;
import com.liujun.util.MD5Util;
public class Main {
public static void main(String[] args) {
//原始密码
String orginStr="12345";
//MD5加密密码
String md5Str;
//将原始密码生成MD5密码
md5Str=MD5Util.encodeToMd5Str(orginStr);
System.out.println("原始密码:"+orginStr);
System.out.println("MD5加密密码:"+md5Str);
//验证密码是否正确
if (MD5Util.validatePassword(md5Str, orginStr)) {
System.out.println("密码匹配成功");
}else{
System.out.println("密码匹配失败");
}
}
}
源码下载地址:http://download.csdn.net/detail/u010739551/7875377