public class MD5Util {
private static final String[] digest = {"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"};
/**
* 32位字符的MD5 密文
* @param txt
* @return
* @throws Exception
*/
private static String initMd5(String txt) throws Exception {
MessageDigest md5 = MessageDigest.getInstance("MD5");//创建MD5核心对象
String encrty = "";
byte[] bytes = md5.digest(txt.getBytes("UTF-8"));//使用byte 数组接收,数组长度16
for (byte b : bytes) {//会循环16次
//每次循环需要从digest数组中随机取2个不同的值,随机取0-15的两个下标
int temp = b;
if (temp<0) {
temp = temp + 256;
}
//第一个下标
int i = temp / 16;
//第二下标
int j = temp % 16;
encrty += digest[i] + digest[j];
}
return encrty;
}
public static String finiMd5(String txt) throws Exception {
//后面加字符串再加密,是为了防密码本
return initMd5(initMd5(txt)+"franky");
}
}