public static String signature(Map<String, String> params,String secret, String removekey1, String removekey2, String removekey3) {
String result = null;
if (params == null){
return result;
}
// 1. 把字典按Key的字母顺序排序
Map<String, String> treeMap = new TreeMap<>();
treeMap.putAll(params);
if(StringUtils.isNotBlank(removekey1)){
treeMap.remove(removekey1);
}
if(StringUtils.isNotBlank(removekey2)){
treeMap.remove(removekey2);
}
if(StringUtils.isNotBlank(removekey3)){
treeMap.remove(removekey3);
}
// 3 把参数串起来
Iterator<String> iter = treeMap.keySet().iterator();
StringBuffer orgin = new StringBuffer(secret);
while (iter.hasNext()) {
String name = iter.next();
try {
orgin.append(name).append(treeMap.get(name));
} catch (Exception e) {
logger.error("join error", e);
}
}
logger.info("encrypt before={}", orgin);
// 4. 加密:MD5 + 大写&十六进制
try {
MessageDigest md = MessageDigest.getInstance("MD5");
result = byte2hex(md.digest(orgin.toString().getBytes("utf-8")));
logger.info("encrypt after={}", result);
} catch (Exception e) {
throw new RuntimeException("sign error !");
}
return result;
}