1.MD5工具类
MD5工具类代码如下:因为我们经常使用utf-8进行加密,所以就只对外开放了一个硬编码的utf-8的MD5加密,这个工具类可以根据自己的项目加密的编码进行适当的修改,
例如:MD5Encode方法则是对传入指定的编码进行加密,不传按照默认加密。也可以将此方法对外开放。
注意:此加密方法返回的加密代码是大写的。
1 package com.mmall.util; 2 3 import org.springframework.util.StringUtils; 4 5 import java.security.MessageDigest; 6 7 public class MD5Util { 8 9 private static String byteArrayToHexString(byte b[]) { 10 StringBuffer resultSb = new StringBuffer(); 11 for (int i = 0; i < b.length; i++) 12 resultSb.append(byteToHexString(b[i])); 13 14 return resultSb.toString(); 15 } 16 17 private static String byteToHexString(byte b) { 18 int n = b; 19 if (n < 0) 20 n += 256; 21 int d1 = n / 16; 22 int d2 = n % 16; 23 return hexDigits[d1] + hexDigits[d2]; 24 } 25 26 /** 27 * 返回大写MD5 28 * 29 * @param origin 30 * @param charsetname 31 * @return 32 */ 33 private static String MD5Encode(String origin, String charsetname) { 34 String resultString = null; 35 try { 36 resultString = new String(origin); 37 MessageDigest md = MessageDigest.getInstance("MD5"); 38 if (charsetname == null || "".equals(charsetname)) 39 resultString = byteArrayToHexString(md.digest(resultString.getBytes())); 40 else 41 resultString = byteArrayToHexString(md.digest(resultString.getBytes(charsetname))); 42 } catch (Exception exception) { 43 } 44 return resultString.toUpperCase(); 45 } 46 47 public static String MD5EncodeUtf8(String origin) { 48 origin = origin + PropertiesUtil.getProperty("password.salt", ""); // 这里的盐随意加一个字符串都可以。但是全局盐要唯一。 49 return MD5Encode(origin, "utf-8"); 50 } 51 52 53 private static final String hexDigits[] = {"0", "1", "2", "3", "4", "5", 54 "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"}; 55 56 }
2.实战
//MD5加盐加密
user.setPassword(MD5Util.MD5EncodeUtf8(user.getPassword()));
// 然后直接保存到数据库中即可。