74 lines
2.4 KiB
Plaintext
74 lines
2.4 KiB
Plaintext
|
|
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<String, String> alarmParams = new TreeMap<String, String>();
|
||
|
|
// //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<String,String> 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;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
}
|