import java.security.MessageDigest;
/**
*通过MD5算法对字符串加密
*
*/
public class ComputeMD5
{
//查表法中的16进制字符表
private final static char[] hexDigits =
{ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
/** */
/**
* 转换字节数组为16进制字串
*
* @param b 字节数组
* @return 16进制字串
*/
public static String byteArrayToHexString(byte[] b)
{
StringBuffer resultSb = new StringBuffer();
for (int i = 0; i < b.length; i++)
{
resultSb.append(byteToHexString(b[i]));
}
return resultSb.toString();
}
/**
* 转换字节为16进制字符串
* @param b 要转换的字节
* @return 转换为16进制的字符串
*/
private static String byteToHexString(byte b)
{
int n = b;
if (n < 0)
n = 256 + n;
int d1 = n / 16;
int d2 = n % 16;
return ""+hexDigits[d1] + hexDigits[d2];
}
/**
* 对字符串进行MD5加密
* @param origin 原始字符串
* @return 加密后的字符串
*/
public static String MD5Encode(String origin)
{
String resultString = null;
try
{
resultString = new String(origin);
MessageDigest md = MessageDigest.getInstance("MD5");
resultString = byteArrayToHexString(md.digest(resultString.getBytes()));
} catch (Exception ex)
{
}
return resultString;
}
} |