|
|
@@ -0,0 +1,39 @@
|
|
|
+package cn.hnthyy.thmz.Utils;
|
|
|
+
|
|
|
+import org.apache.commons.compress.utils.Lists;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+
|
|
|
+import java.io.UnsupportedEncodingException;
|
|
|
+import java.security.NoSuchAlgorithmException;
|
|
|
+import java.util.*;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 海慈签名算法
|
|
|
+ */
|
|
|
+public class HcPassWordUtil {
|
|
|
+ /**
|
|
|
+ * sign 签名 (参数名按ASCII码从小到大排序(字典序)+key+MD5+转大写签名)
|
|
|
+ * @param map
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public static String encodeSign(SortedMap<String,String> map, String key) throws UnsupportedEncodingException, NoSuchAlgorithmException {
|
|
|
+ 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 = 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 Md5Util.encoderByMd5(sign).toUpperCase();
|
|
|
+ }
|
|
|
+}
|