加签
public String getSign(Object object) throws Exception {
Map<String, String> map = JSON.parseObject(JSON.toJSONString(object),
new TypeReference<Map<String, String>>() {});
TreeMap<String, String> treeMap = new TreeMap<>(map);
return unionSign(treeMap, md5Key, GlobalConstant.MD5);
}
public String unionSign(TreeMap<String, String> params,String md5key, String signType) throws Exception {
params.remove("sign");
params.put("key", md5key);
StringBuilder sb = new StringBuilder();
for (Map.Entry<String, String> entry : params.entrySet()) {
if (entry.getValue() != null && entry.getValue().length() > 0) {
sb.append(entry.getKey()).append("=").append(entry.getValue())
.append("&");
}
}
if (sb.length() > 0) {
sb.deleteCharAt(sb.length() - 1);
}
String sign = "";
sign = md5(sb.toString().getBytes("UTF-8"));
params.remove("key");
return sign;
}
验签
public boolean validSign(Object object) throws Exception {
Map<String, String> paramsMap = JSON.parseObject(JSON.toJSONString(object),
new TypeReference<Map<String, String>>() {});
TreeMap<String, String> params = new TreeMap<>(paramsMap);
return validSign(params, md5Key, GlobalConstant.MD5);
}
public boolean validSign(TreeMap<String, String> param, String md5Key, String signType) throws Exception {
if (param != null && !param.isEmpty()) {
if (!param.containsKey("sign"))
return false;
String sign = param.remove("sign");
param.put("key", md5key);
StringBuilder sb = new StringBuilder();
for (Map.Entry<String, String> entry : param.entrySet()) {
if (entry.getValue() != null && entry.getValue().length() > 0) {
sb.append(entry.getKey()).append("=")
.append(entry.getValue()).append("&");
}
}
if (sb.length() > 0) {
sb.deleteCharAt(sb.length() - 1);
}
return sign.toLowerCase().equals(
md5(sb.toString().getBytes("UTF-8")).toLowerCase());
}
return false;
}