com.github.xiaoyuge5201.weixin.Md5Sign Maven / Gradle / Ivy
package com.github.xiaoyuge5201.weixin;
import org.apache.commons.lang3.StringUtils;
import java.security.MessageDigest;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.SortedMap;
/**
* @author xiaoyuge
*/
public class Md5Sign {
private static final String[] HEXDIGITS = { "0", "1", "2", "3", "4", "5",
"6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
private static String byteToHexString(byte b) {
int n = b;
if (n < 0) {
n += 256;
}
int d1 = n / 16;
int d2 = n % 16;
return HEXDIGITS[d1] + HEXDIGITS[d2];
}
/**
* 字节数组转字符串
*
* @param b 数组
* @return 字符串
*/
private static String byteArrayToHexString(byte[] b) {
StringBuffer resultSb = new StringBuffer();
for (int i = 0; i < b.length; i++) {
resultSb.append(byteToHexString(b[i]));
}
return resultSb.toString();
}
/**
* @param origin 原文
* @param charsetName 编码格式
* @return 加密后的字符串
*/
public static String MD5Encode(String origin, String charsetName) {
String resultString = null;
try {
resultString = new String(origin);
MessageDigest md = MessageDigest.getInstance("MD5");
if (StringUtils.isNotBlank(charsetName)) {
resultString = byteArrayToHexString(md.digest(resultString.getBytes()));
}
else {
resultString = byteArrayToHexString(md.digest(resultString
.getBytes(charsetName)));
}
} catch (Exception exception) {
}
return resultString;
}
/**
* MD5
* 微信支付签名算法sign
* @param characterEncoding 编码格式
* @param parameters 参数
* @return 签名结果
*/
@SuppressWarnings("rawtypes")
public static String createSign(String characterEncoding, SortedMap