工具类代码示例:
package com.mischen.it.util;
import java.security.MessageDigest;
/**
*
*/
public class MD5Util {
/**
* 私有构造方法,将该工具类设为单例模式.
*/
private MD5Util() {
}
private static final String[] hex = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
public static String encode(String password) {
try {
MessageDigest md5 = MessageDigest.getInstance("MD5");
byte[] byteArray = md5.digest(password.getBytes("utf-8"));
String passwordMD5 = byteArrayToHexString(byteArray);
return passwordMD5;
} catch (Exception e) {
e.fillInStackTrace();
}
return password;
}
private static String byteArrayToHexString(byte[] byteArray) {
StringBuffer sb = new StringBuffer();
for (byte b : byteArray) {
sb.append(byteToHexChar(b));
}
return sb.toString();
}
private static Object byteToHexChar(byte b) {
int n = b;
if (n < 0) {
n = 256 + n;
}
int d1 = n / 16;
int d2 = n % 16;
return hex[d1] + hex[d2];
}
}
调用代码:
/**
* 获取参数签名
* @param paramMap 签名参数
* @param paySecret 签名密钥
* @return
*/
public static String getSign (Map<String , Object> paramMap , String paySecret){
SortedMap<String, Object> smap = new TreeMap<String, Object>(paramMap);
StringBuffer stringBuffer = new StringBuffer();
for (Map.Entry<String, Object> m : smap.entrySet()) {
Object value = m.getValue();
if (value != null && StringUtils.isNotBlank(String.valueOf(value))){
stringBuffer.append(m.getKey()).append("=").append(m.getValue()).append("&");
}
}
stringBuffer.delete(stringBuffer.length() - 1, stringBuffer.length());
String argPreSign = stringBuffer.append("&paySecret=").append(paySecret).toString();
String signStr = MD5Util.encode(argPreSign).toUpperCase();
return signStr;
}