package com.hand.kinggrid; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.TreeMap; import java.util.logging.Logger; public class MD5 { private static final Logger logger = Logger.getLogger("MD5"); /** * @Description 字符串加密为MD5 中文加密一致通用,必须转码处理: plainText.getBytes("UTF-8") * @param plainText * 需要加密的字符串 * @return */ public static String toMD5(String plainText) { StringBuffer rlt = new StringBuffer(); try { rlt.append(md5String(plainText.getBytes("UTF-8"))); } catch (UnsupportedEncodingException e) { logger.severe(" CipherHelper toMD5 exception."); e.printStackTrace(); } return rlt.toString(); } /** * MD5 参数签名生成算法 * * @param HashMap<String,String> * params 请求参数集,所有参数必须已转换为字符串类型 * @param String * secret 签名密钥 * @return 签名 * @throws IOException */ public static String getSignature(HashMap<String, String> params, String secret) { Map<String, String> sortedParams = new TreeMap<String, String>(params); Set<Entry<String, String>> entrys = sortedParams.entrySet(); StringBuilder basestring = new StringBuilder(); for (Entry<String, String> param : entrys) { basestring.append(param.getKey()).append("=").append(param.getValue()); } return getSignature(basestring.toString(), secret); } /** * MD5 参数签名生成算法 * * @param String * sigstr 签名字符串 * @param String * secret 签名密钥 * @return 签名 * @throws IOException */ public static String getSignature(String sigstr, String secret) { StringBuilder basestring = new StringBuilder(sigstr); basestring.append("#"); basestring.append(toMD5(secret)); return toMD5(basestring.toString()); } public static byte[] md5Raw(byte[] data) { byte[] md5buf = null; try { MessageDigest md5 = MessageDigest.getInstance("MD5"); md5buf = md5.digest(data); } catch (Exception e) { md5buf = null; logger.severe("md5Raw error."); e.printStackTrace(); } return md5buf; } public static String md5String(byte[] data) { String md5Str = ""; try { MessageDigest md5 = MessageDigest.getInstance("MD5"); byte[] buf = md5.digest(data); for (int i = 0; i < buf.length; i++) { md5Str += Byte2Hex.byte2Hex(buf[i]); } } catch (Exception e) { md5Str = null; logger.severe("md5String error."); e.printStackTrace(); } return md5Str; } }