package com.nationalelectric.greenH5; import java.security.NoSuchAlgorithmException; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.SortedMap; import java.util.regex.Matcher; import java.util.regex.Pattern; import com.nationalelectirc.utils.MD5Util; public class MD5SignUtil { // public static void main(String[] args) throws UnsupportedEncodingException, NoSuchAlgorithmException { // SortedMap alarmParams = new TreeMap(); // //user basic information // alarmParams.put("mobile", "13789096789"); // String real_name = "张三"; // if(isContainChinese(real_name)) // real_name=java.net.URLEncoder.encode(real_name, "utf-8"); // alarmParams.put("real_name", real_name); // alarmParams.put("meal_no", "8902132"); // alarmParams.put("status", "0"); // alarmParams.put("operate", "0"); // String department_name="后勤部"; // if(isContainChinese(department_name)) // department_name=java.net.URLEncoder.encode(department_name, "utf-8"); // alarmParams.put("department_name", department_name); // String sign = createSign(alarmParams); // System.out.println(sign); // } @SuppressWarnings("rawtypes") public static String createSign(SortedMap parameters) throws NoSuchAlgorithmException{ StringBuffer sb = new StringBuffer(); Set es = parameters.entrySet(); Iterator it = es.iterator(); while(it.hasNext()) { Map.Entry entry = (Map.Entry)it.next(); String k = (String)entry.getKey(); Object v = entry.getValue(); if(null != v && !"".equals(v) && !"sign".equals(k) && !"key".equals(k)) { sb.append(k.toLowerCase() + "=" + v + "&"); } } String string = sb.toString(); string=string.substring(0, string.length()-1); String sign = MD5Util.getMD5(string); return sign; } /** * 判断字符串中是否包含中文 * * @param str * 待校验字符串 * @return 是否为中文 * @warn 不能校验是否为中文标点符号 */ public static boolean isContainChinese(String str) { Pattern p = Pattern.compile("[\u4e00-\u9fa5]"); Matcher m = p.matcher(str); if (m.find()) { return true; } return false; } }