package com.bwjf.webapp.util;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/**
* 将数据转换为16进制形式的加密方法
* @author Administrator
*
*/
public class HexMd5 {
public final static String[] HEXDIGIST={"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"};
/**1.将数据转换为字节形式并进行加密后转换为字节数组形式
* 2.将字节数组进行遍历,每一个遍历的数据转换为对应的16进制形式,并添加都字符串中进行返回
* 3.字节转换为16进制形式的方法
*
*/
/**
* 方法1:字节转对应的16进制字符串方法,并返回字符串
*/
public static String byteToHex(byte b){
int n = b;
if(n<0){
n+=256;
}
int D1 = n/16;
int D2 = n%16;
return HEXDIGIST[D1]+HEXDIGIST[D2];
}
/**
* 方法2:将字节数组进行遍历并调用1方法,处理得到字符串添加到StringBuilder字符串中,并返回字符串
*/
public static String byteArrayToHex(byte[] b){
byte[] bs = b;
StringBuilder sb = new StringBuilder();
for(byte bb:bs){
sb.append(byteToHex(bb));
}
return sb.toString();
}
/**
* 方法2并列,形式为数字字符串形式
*/
public static String byteToNum(byte b){
int Reg = b;
if(Reg<0){
Reg+=256;
}
return String.valueOf(Reg);
}
/**
* 方法3:将源数据进行MD5处理,并结合以上方法进行数据处理
*/
public static String Md5Encode(String ss){
String resultString;//定义一个结果字符串
try {
MessageDigest md = MessageDigest.getInstance("MD5");//获取MD5加密类实例
md.update(ss.getBytes("utf-8"));//将传入的字符串以utf-8字符集规则转换为字节形式,并进行MD5处理
resultString = byteArrayToHex(md.digest());
return resultString;//返回处理结果
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "";
}
/**
* 测试
*/
public static void main(String[] args) {
System.out.println(HexMd5.Md5Encode("89887887878"));
}
}