Commit f54ea7b6 authored by 张永's avatar 张永

1

parent 8a3ecbb9
package com.egolm.common; package com.egolm.common;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.util.Iterator; import java.util.Iterator;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.Set; import java.util.Set;
import java.util.SortedMap; import java.util.SortedMap;
import java.util.TreeMap; import java.util.TreeMap;
public class MD5Util { public class MD5Util {
/** /**
* 签名算法sign * 签名算法sign
* @param characterEncoding * @param characterEncoding
* @param parameters * @param parameters
* @return * @return
*/ */
public static String createSign(String characterEncoding,SortedMap<Object,Object> parameters){ public static String createSign(String characterEncoding,SortedMap<Object,Object> parameters){
StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer();
Set<?> es = parameters.entrySet();//所有参与传参的参数按照accsii排序(升序) Set<?> es = parameters.entrySet();//所有参与传参的参数按照accsii排序(升序)
Iterator<?> it = es.iterator(); Iterator<?> it = es.iterator();
while(it.hasNext()) { while(it.hasNext()) {
Entry<?, ?> entry = (Entry<?, ?>)it.next(); Entry<?, ?> entry = (Entry<?, ?>)it.next();
String k = (String)entry.getKey(); String k = (String)entry.getKey();
Object v = entry.getValue(); Object v = entry.getValue();
if(null != v && !"".equals(v)&& !"sign".equals(k) ) { if(null != v && !"".equals(v)&& !"sign".equals(k) ) {
sb.append(k + "=" + v + "&"); sb.append(k + "=" + v + "&");
} }
} }
sb.deleteCharAt(sb.length()-1); sb.deleteCharAt(sb.length()-1);
System.out.println(sb.toString()); System.out.println("签名的字符串:"+sb.toString());
String sign = MD5Encode(sb.toString(), characterEncoding).toUpperCase(); String sign = MD5Encode(sb.toString(), characterEncoding).toUpperCase();
return sign; return sign;
} }
private static String byteArrayToHexString(byte b[]) { private static String byteArrayToHexString(byte b[]) {
StringBuffer resultSb = new StringBuffer(); StringBuffer resultSb = new StringBuffer();
for (int i = 0; i < b.length; i++) for (int i = 0; i < b.length; i++)
resultSb.append(byteToHexString(b[i])); resultSb.append(byteToHexString(b[i]));
return resultSb.toString(); return resultSb.toString();
} }
private static String byteToHexString(byte b) { private static String byteToHexString(byte b) {
int n = b; int n = b;
if (n < 0) if (n < 0)
n += 256; n += 256;
int d1 = n / 16; int d1 = n / 16;
int d2 = n % 16; int d2 = n % 16;
return hexDigits[d1] + hexDigits[d2]; return hexDigits[d1] + hexDigits[d2];
} }
public static String MD5Encode(String origin, String charsetname) { public static String MD5Encode(String origin, String charsetname) {
String resultString = null; String resultString = null;
try { try {
resultString = new String(origin); resultString = new String(origin);
MessageDigest md = MessageDigest.getInstance("MD5"); MessageDigest md = MessageDigest.getInstance("MD5");
if (charsetname == null || "".equals(charsetname)) if (charsetname == null || "".equals(charsetname))
resultString = byteArrayToHexString(md.digest(resultString resultString = byteArrayToHexString(md.digest(resultString
.getBytes())); .getBytes()));
else else
resultString = byteArrayToHexString(md.digest(resultString resultString = byteArrayToHexString(md.digest(resultString
.getBytes(charsetname))); .getBytes(charsetname)));
} catch (Exception exception) { } catch (Exception exception) {
} }
return resultString; return resultString;
} }
private static final String hexDigits[] = { "0", "1", "2", "3", "4", "5", private static final String hexDigits[] = { "0", "1", "2", "3", "4", "5",
"6", "7", "8", "9", "a", "b", "c", "d", "e", "f" }; "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
public static void main(String[] args) { public static void main(String[] args) {
SortedMap<Object,Object> parameters = new TreeMap<Object,Object> (); SortedMap<Object,Object> parameters = new TreeMap<Object,Object> ();
parameters.put("smsType", "cl");
parameters.put("mobile", "18607278529"); parameters.put("AppID", "E34EAAAFCC714ABA");
parameters.put("content", "验证码:123456"); parameters.put("AppKey", "F7FC3382E34EAAAFCC714ABA172FD00C");
parameters.put("timestamp", "1515462745539"); parameters.put("LangID", "936");
parameters.put("md5Key", "E67720C4E7B84615D7EAF106EBC8E677"); parameters.put("ServerID", "Scan_CheckMemPointCoupon");
String createSign = MD5Util.createSign("UTF-8", parameters); parameters.put("ServerTypeID", 1);
System.out.println(createSign); parameters.put("timestamp", "1560474936524");
System.out.println(parameters);
/* String str = "lcN7013719"; //计算一个MD5KEY String createSign = MD5Util.createSign("UTF-8", parameters);
System.out.println(MD5Encode(str,"UTF-8").toUpperCase());*/ System.out.println(createSign);
}
/* String str = "lcN7013719"; //计算一个MD5KEY
System.out.println(MD5Encode(str,"UTF-8").toUpperCase());*/
} }
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment