【http://youzitool.com 新博客,欢迎访问】
MD5加密类
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
/*
* 传入参数:一个字符串
* 传出参数:MD5结果的字符串
*/
public class MD5 {
//将字节转换成十六进制表示的字符
private final static char hexDigits[] =
{'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
//得到MD5字符串
public static String getMD5(String str){
String s = null;//保存计算的MD5字符串
if(str != null){
try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte result[] = md.digest(str.getBytes());//计算结果是一个128位(即16个字符)的长整数
s = byteArrayToHexString(result);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
return s;//返回MD5字符串
}
//将字节数组转化成十六进制字符串
private static String byteArrayToHexString(byte []b){
StringBuffer sb = new StringBuffer();
for(int i=0;i<b.length;i++)
sb.append(byteToHexString(b[i]));
return sb.toString();
}
/*
* 函数功能:将一个字节转化成十六进制形式的字符串
* @ 每个字节(byte)占8位,每个16进制字符可用2个字节表示
*/
private static String byteToHexString(byte b){
char sChar[] = new char[2];
sChar[0] = hexDigits[(b >> 4) & 0xf];//取字节中高4位的数字转换
sChar[1] = hexDigits[b & 0xf];//取字节中低4位的数字转换
return new String(sChar);
}
}<span style="font-family:Arial, Verdana, sans-serif;"><span style="white-space: normal;">
</span></span>
测试用例
public class TestMD5 {
public static void main(String[] args) {
System.out.println(MD5.getMD5("http://blog.csdn.net/matraxa"));
}
}