项目中用到的md5工具类:

 1 package com.mall.util;
 2 
 3 import org.springframework.util.StringUtils;
 4 
 5 import java.security.MessageDigest;
 6 
 7 /**
 8  * Created by geely
 9  */
10 public class MD5Util {
11 
12     /**
13      * 将字节数组转为十六进制数
14      * @param b
15      * @return
16      */
17     private static String byteArrayToHexString(byte b[]) {
18         StringBuffer resultSb = new StringBuffer();
19         for (int i = 0; i < b.length; i++) {
20             //每个字节转为十六进制数后进行拼接
21             resultSb.append(byteToHexString(b[i]));
22         }
23         return resultSb.toString();
24     }
25 
26     /**
27      * 将某一个字节转为十六进制数
28      * @param b
29      * @return
30      */
31     private static String byteToHexString(byte b) {
32         int n = b;
33         if (n < 0)
34             n += 256;
35         int d1 = n / 16;
36         int d2 = n % 16;
37         return hexDigits[d1] + hexDigits[d2];
38     }
39 
40     /**
41      * 返回大写MD5
42      *
43      * @param origin 要加密的原字符串
44      * @param charsetname 加密算法使用的字符集
45      * @return
46      */
47     private static String MD5Encode(String origin, String charsetname) {
48         String resultString = null;
49         try {
50             resultString = new String(origin);
51             //初始化md5算法
52             MessageDigest md = MessageDigest.getInstance("MD5");
53             //md.digest(resultString.getBytes())获取数据的信息摘要,返回字节数组
54             //byteArrayToHexString()将字节数组转为十六进制数
55             if (charsetname == null || "".equals(charsetname)) {
56                 //如果不传入字符集,则调用默认字符集
57                 resultString = byteArrayToHexString(md.digest(resultString.getBytes()));
58             }
59             else {
60                 resultString = byteArrayToHexString(md.digest(resultString.getBytes(charsetname)));
61             }
62         } catch (Exception exception) {
63         }
64         return resultString.toUpperCase();
65     }
66 
67     /**
68      * 唯一public方法对外公开
69      * @param origin
70      * @return
71      */
72     public static String MD5EncodeUtf8(String origin) {
73         //对原字符串加盐值返回
74         origin = origin + PropertiesUtil.getProperty("password.salt", "");
75         //传入utf-8字符集
76         return MD5Encode(origin, "utf-8");
77     }
78 
79     //十六进制数组值
80     private static final String hexDigits[] = {"0", "1", "2", "3", "4", "5",
81             "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};
82 
83 }
View Code

相关文章: