/**
* 签名方法
* 传参Values值ASCII排序拼接后缀加盐(123456) 进行MD5加密(字母小写)
* 例如{"channel":"1","customerId":"1","signature":"56a0281fd65d73f05cedd7d94bb561ee"}
* (signature值为11123456MD5加密(字母小写) )
*
* @param parameters
* @return
*/
public static String createSign(SortedMap<String, Object> parameters, String key) {
String characterEncoding = "UTF-8";
StringBuffer sbKey = new StringBuffer();
//所有参与传参的参数按照ASCII排序(升序)
List<Map.Entry<String, Object>> infoIds = new ArrayList<Map.Entry<String, Object>>(parameters.entrySet());
Collections.sort(infoIds, new Comparator<Map.Entry<String, Object>>() {
@Override
public int compare(Map.Entry<String, Object> o1, Map.Entry<String, Object> o2) {
return (o1.getKey()).toString().compareTo(o2.getKey());
}
});
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)) {
sbKey.append(v);
}
}
sbKey = sbKey.append(key);
//MD5加密,结果转换为小写字符
String sign = MD5Util.MD5Encode(sbKey.toString(), characterEncoding).toLowerCase();
return sign;
}
Java 加密算法
最新推荐文章于 2020-10-03 19:59:12 发布