import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* MD5算法工具类
* @author XLINK
*
*/
public class MD5Tool {
/**
* 16位md5
* @return
*/
public static String hexMD5(String string){
String md5 = MD5(string);
if(null != md5 && md5.length() >= 24){
md5 = md5.substring(8, 24);
}
return md5;
}
/**
* MD5方法
*
* @param string
* @return String
*/
public static String MD5(String string) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
return byteArrayToHexString(md.digest(string.getBytes()));
} catch (NoSuchAlgorithmException e) {
return null;
}
}
/**
* MD5加密
* @param bytes
* @return
*/
public static String MD5(byte[] bytes){
try {
MessageDigest md = MessageDigest.getInstance("MD5");
return byteArrayToHexString(md.digest(bytes));
} catch (NoSuchAlgorithmException e) {
return null;
}
}
/**
* 将字节数组转换为十六进制字符串
* @param bytes
* @return
*/
private static String byteArrayToHexString(byte[] bytes) {
StringBuffer buf = new StringBuffer(bytes.length * 2);
for (int i = 0; i < bytes.length; i++) {
if (((int) bytes[i] & 0xff) < 0x10) {
buf.append("0");
}
buf.append(Long.toString((int) bytes[i] & 0xff, 16));
}
return buf.toString();
}
public static void main(String[] args) {
String str = MD5Tool.hexMD5("jack");
System.out.println(str);
}
}