/**
* sign 签名 (参数名按升序排列 +key+MD5+转大写签名)
*
* @return
*/
public static String createSign(SortedMap params, String key) {
StringBuffer sbkey = new StringBuffer();
// entrySet 所有参与传参的参数按升序排列
Set es = params.entrySet();
Iterator it = es.iterator();
while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
String k = (String) entry.getKey();
Object v = entry.getValue();
//空值不传递,不参与签名组串
if (null != v && !"".equals(v)) {
sbkey.append(k + "=" + v + "&");
}
}
sbkey = sbkey.append("key=" + key);
System.out.println(sbkey);
//MD5加密,结果转换为大写字符
String sign = encodeByMD5(sbkey.toString()).toUpperCase();
return sign;
}
/**
* 对字符串进行MD5加密
*
* @param str 需要加密的字符串
* @return 小写MD5字符串 32位
*/
public static String encodeByMD5(String str) {
MessageDigest digest;
try {
digest = MessageDigest.getInstance("MD5");
digest.update(str.getBytes());
return new BigInteger(1, digest.digest()).toString(16);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
SortedMap <String, Object> params = new TreeMap <>();
params.put("mid", "39146742");
params.put("date", "20190327");
params.put("sign", createSign(params, "2EF06B99200B2A213DE9"));
}
参数名按升序排列 +key+MD5+转大写签名
最新推荐文章于 2024-07-25 14:40:44 发布