【java-md5-加签验签 】

加签

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"));// 记得是md5编码的加签
	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;
	}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值