MD5Util 加密工具类,微信使用过

package com.cmft.util;


import java.security.MessageDigest;


import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


import com.cmft.common.constant.CodeConstant;
/**
 * MD5加密工具类
 * 
 * @author zhangjl001 2018年5月1日
 * @version
 */
public class MD5Util {
private static Logger logger = LoggerFactory.getLogger(MD5Util.class);


public final static String md5(String s) {
// 用于加密的字符
char md5String[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F' };
try {
// 使用平台的默认字符集将此 String 编码为 byte序列,并将结果存储到一个新的 byte数组中
byte[] btInput = s.getBytes();


// 信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值。
MessageDigest mdInst = MessageDigest.getInstance("MD5");


// MessageDigest对象通过使用 update方法处理数据, 使用指定的byte数组更新摘要
mdInst.update(btInput);


// 摘要更新之后,通过调用digest()执行哈希计算,获得密文
byte[] md = mdInst.digest();


// 把密文转换成十六进制的字符串形式
int j = md.length;
char str[] = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++) { // i = 0
byte byte0 = md[i]; // 95
str[k++] = md5String[byte0 >>> 4 & 0xf]; // 5
str[k++] = md5String[byte0 & 0xf]; // F
}


// 返回经过加密后的字符串
return new String(str);


} catch (Exception e) {
logger.error(e.getMessage(), e);
return null;
}
}


public static String md5Pwd(String pwd) {
return StringUtils.isBlank(pwd) ? "" : md5(CodeConstant.SALT_PWD_DEFAULT + pwd);
}

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();
}


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];
}


public static String MD5Encode(String origin, String charsetname) {
String resultString = null;
try {
resultString = new String(origin);
MessageDigest md = MessageDigest.getInstance("MD5");
if (charsetname == null || "".equals(charsetname)){
resultString = byteArrayToHexString(md.digest(resultString
.getBytes()));
}

else{
resultString = byteArrayToHexString(md.digest(resultString
.getBytes(charsetname)));
}
} catch (Exception e) {
LogHelper.commonerror("异常抛出:", e);
}
return resultString;
}


private static final String HEXDIGITS[] = { "0", "1", "2", "3", "4", "5",
"6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };


}

你可能感兴趣的:(json,字符串转对象,springmvc,+mybatis)