本签名采用MD5加密,对参数按升序排列,使用&连接参数生成,具体代码如下:
/* * createSignFromRequest * @description:根据request请求对参数生成签名 * @author 李阳 * @date 2018/8/11 14:20 * @params [request] * @return java.lang.String */public static String createSignFromRequest(HttpServletRequest request) { Mapparams = request.getParameterMap(); ArrayList keys = new ArrayList<>(params.keySet()); Collections.sort(keys); StringBuffer sb = new StringBuffer(); for (int i = 0; i < keys.size(); i++) { String key = keys.get(i); String value = request.getParameter(key); if (!key.equals("sign") && StringUtils.isNotBlank(value)) { sb.append("&").append(key).append("=").append(value); } } return getMD5(sb.toString().replaceFirst("&", ""));}/* * getMD5 * @description:md5 * @author 李阳 * @date 2018/8/11 14:20 * @params [str] * @return java.lang.String */public static String getMD5(String str) { try { // 生成一个MD5加密计算摘要 MessageDigest md = MessageDigest.getInstance("MD5"); // 计算md5函数 md.update(str.getBytes()); return new BigInteger(1, md.digest()).toString(16); } catch (Exception e) { e.printStackTrace(); return null; }