偶然机会与第三方接口对接,需要签名等一系列骚操作。(不知道考谁的,所以不知道出处了,也放上来备忘,有侵权及时联系)
private static String createParams(SortedMap<Object, Object> parameters, String key){
//不带key
StringBuffer sb = new StringBuffer();
//带key 加密使用
StringBuffer sbkey = new StringBuffer();
//所有参与传参的参数按照accsii排序(升序)
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)) {
sb.append(k + "=" + v + "&");
sbkey.append(k + "=" + v + "&");
}
}
sbkey=sbkey.append("key="+key);
//签名 MD5加密,结果转换为小写字符
String sign = DigestUtils.md5Hex(sbkey.toString()).toLowerCase();
return sb.toString()+"sign="+sign;
}
地址加上拼接返回参数即可