java 接口签名 参数名按ASCII码从小到大排序(字典序)+key+MD5+转大写签名

java 接口签名 参数名按ASCII码从小到大排序(字典序)+key+MD5+转大写签名
/** * sign 签名 (参数名按ASCII码从小到大排序(字典序)+key+MD5+转大写签名) * @param map * @return */ public static String encodeSign(SortedMap<String,String> map,String key){ if(StringUtils.isEmpty(key)){ throw new RuntimeException("签名key不能为空"); } Set<Map.Entry<String, String>> entries = map.entrySet(); Iterator<Map.Entry<String, String>> iterator = entries.iterator(); List<String> values = Lists.newArrayList(); while(iterator.hasNext()){ Map.Entry entry = (Map.Entry) iterator.next(); String k = String.valueOf(entry.getKey()); String v = String.valueOf(entry.getValue()); if (StringUtils.isNotEmpty(v) && entry.getValue() !=null && !"sign".equals(k) && !"key".equals(k)) { values.add(k + "=" + v); } } values.add("key="+ key); String sign = StringUtils.join(values, "&"); return this.encodeByMD5(sign).toUpperCase(); } /** * 通过MD5加密 * * @param algorithmStr * @return String */ public static String encodeByMD5(String algorithmStr) { if (algorithmStr==null) { return null; } try { MessageDigest messageDigest = MessageDigest.getInstance(ALGORITHM_MD5); messageDigest.update(algorithmStr.getBytes("utf-8")); return getFormattedText(messageDigest.digest()); } catch (Exception e) { throw new RuntimeException(e); } }