java md5算法

来源:互联网 发布:魔兽7.0数据库app 编辑:程序博客网 时间:2024/06/07 12:43
public class Md5 {

public static String getMD5(byte[] sourse){

String s = null;
//用来将字节转换成16进制表示的字符
char hexDigits[]={'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
try {
java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
md.update(sourse);
byte temp[] = md.digest();//md5的计算结果是一个128位的长整数,用字节表示就是16个字节
char str[] = new char[16*2];//每个字节用16进制表示的话,使用两个字符,所以表示成16进制要用32个字符

int k = 0; //表示转换结果中对应的字符位置

for(int i=0;i<16;i++){// 从第一个字节开始,对 MD5 的每一个字节
//转换成 16 进制字符的转换
byte byte0 = temp[i];// 取第 i 个字节

str[k++] = hexDigits[byte0 >>> 4 & 0xf]; // 取字节中高 4 位的数字转换, >>> 为逻辑右移,将符号位一起右移

str[k++] = hexDigits[byte0 & 0xf];// 取字节中低 4 位的数字转换

}
s = new String(str);//换后的结果转换为字符串


} catch (Exception e) {
e.printStackTrace();
}

return s;
}
}
0 0