package com.accp.util;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Util {
private static MessageDigest md = null;
static { // 通过静态代码块初始化加密器
try {
md = MessageDigest.getInstance("md5"); // 获得MD5算法加密器(策略模式)
}
catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
public static String getMD5String(String origin) {
if(md != null) {
// 将原来的字符串转成字节再调用加密算法获得加密后的字节数组
byte[] buffer = md.digest(origin.getBytes());
StringBuffer sb = new StringBuffer();
for(byte b : buffer) { // 对字节数组进行十六进制化处理
// 通过>>将高4位移到低4位再通过&(按位与)去掉高4位转成一位十六进制数
sb.append(Integer.toHexString((b >> 4) & 0x0f));
// 通过按位与运算(&)取出当前字节的低4位转换成一位十六进制数
sb.append(Integer.toHexString(b & 0x0f));
}
return sb.toString();
}
return origin;
}
}