com.github.aqiu202.wechat.wxcodec.util.MD5 Maven / Gradle / Ivy
package com.github.aqiu202.wechat.wxcodec.util;
import java.security.MessageDigest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class MD5 {
private final static Logger log = LoggerFactory.getLogger(MD5.class);
private MD5() {
}
private final static String[] hexDigits = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"a", "b", "c", "d",
"e", "f"};
/**
* 转换字节数组为16进制字串
*
* @param b 字节数组
* @return 16进制字串
*/
public static String byteArrayToHexString(byte[] b) {
StringBuilder resultSb = new StringBuilder();
for (byte aB : b) {
resultSb.append(byteToHexString(aB));
}
return resultSb.toString();
}
/**
* 转换byte到16进制
*
* @param b 要转换的byte
* @return 16进制格式
*/
private static String byteToHexString(byte b) {
int n = b;
if (n < 0) {
n = 256 + n;
}
int d1 = n / 16;
int d2 = n % 16;
return hexDigits[d1] + hexDigits[d2];
}
/**
* MD5编码
*
* @param origin 原始字符串
* @return 经过MD5加密之后的结果
*/
public static String encode(String origin) {
String resultString = null;
try {
resultString = origin;
MessageDigest md = MessageDigest.getInstance("MD5"); //NOSONAR
resultString = byteArrayToHexString(md.digest(resultString.getBytes()));
} catch (Exception e) {
log.error("", e);
}
return resultString;
}
public static boolean matched(String orgin, String sign) {
return encode(orgin).equals(sign);
}
}