package com.xjc.util;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5 {
//加密16进制数:
private static final String[] digital = {"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"};
private static String initMD5(String txt) throws NoSuchAlgorithmException, UnsupportedEncodingException {
//获取MD5加密核心类:---32位 字符串 (16进制数)
MessageDigest md5 = MessageDigest.getInstance("MD5");
byte[] bytes = txt.getBytes("UTF-8");
byte[] bs = md5.digest(bytes); //加密
String miwen = "";
//总共16个数: -31,10,-36,57,73,-70,89,-85,-66,86,-32,87,-14,15,-120,62
//转化为最终返回的32位
for(byte b : bs) {
int temp = b;
if(temp<0) {
temp += 256; //字节不超过256--》 必为正数
}
//temp 为正数(0-15之间)
int index1 = temp/16; //取商
int index2 = temp % 16; //取余数
miwen += digital[index1]+digital[index2];
}
return miwen;
}
//最终加密算法:
private static String FinalMD5(String miwen) throws NoSuchAlgorithmException, UnsupportedEncodingException {
//多重加密
return initMD5(miwen)+"woela"+initMD5(miwen);
}
public static void main(String[] args) throws Exception, UnsupportedEncodingException {
String msg = "123456";
System.out.println(FinalMD5(msg));
}
}