package com.xdl.util;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class Md5Util {
public static String md5Str(String data){
StringBuffer strBuf = new StringBuffer();
try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] databytes = data.getBytes();
md.update(databytes);
// 获取经过md5 算法处理之后的字节码
byte[] md5Bytes = md.digest();
System.out.println(md5Bytes.length);
// 如何把 一个 16 长度的byte 数组 变成32 位长度的16进制形式
for(int i=0;i<md5Bytes.length;i++){
byte b = md5Bytes[i];
// 一个byte 等于 8bit 4bit 可以表达成一个位16进制
// 变成16进制形式时 最长是两位
String tempStr = Integer.toHexString(b&0xff);
//System.out.println(tempStr);
if(tempStr.length() < 2){
tempStr = "0"+tempStr;
}
strBuf.append(tempStr);
}
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return strBuf.toString();
}
/* 加盐 */
public static String md5StrSalt(String data,String salt){
//"abcd"
data = data + salt;
StringBuffer strBuf = new StringBuffer();
try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] databytes = data.getBytes();
md.update(databytes);
// 获取经过md5 算法处理之后的字节码
byte[] md5Bytes = md.digest();
System.out.println(md5Bytes.length);
// 如何把 一个 16 长度的byte 数组 变成32 位长度的16进制形式
for(int i=0;i<md5Bytes.length;i++){
byte b = md5Bytes[i];
// 一个byte 等于 8bit 4bit 可以表达成一个位16进制
// 变成16进制形式时 最长是两位
String tempStr = Integer.toHexString(b&0xff);
//System.out.println(tempStr);
if(tempStr.length() < 2){
tempStr = "0"+tempStr;
}
strBuf.append(tempStr);
}
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return strBuf.toString();
}
}