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
原文地址:http://blog.csdn.net/u010739551/article/details/39118703