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

📅 2026/7/28 1:56:41
java 接口签名 参数名按ASCII码从小到大排序(字典序)+key+MD5+转大写签名
/** * sign 签名 参数名按ASCII码从小到大排序字典序keyMD5转大写签名 * param map * return */ public static String encodeSign(SortedMapString,String map,String key){ if(StringUtils.isEmpty(key)){ throw new RuntimeException(签名key不能为空); } SetMap.EntryString, String entries map.entrySet(); IteratorMap.EntryString, String iterator entries.iterator(); ListString 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 (algorithmStrnull) { 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); } }