项目中用到的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 }