因为md5加密后得到的数据是128位的字节数组,第一种方法把数组转换成16进制输出.
public class MD5Utils {
public static String md5(String text, String encoding) throws Exception{
MessageDigest msgDigest = null;
msgDigest = MessageDigest.getInstance("MD5");
byte[] bytes = null;
if (encoding == null || encoding.equals("")) {
bytes = msgDigest.digest(text.getBytes());
} else {
bytes = msgDigest.digest(text.getBytes(encoding));
}
String md5Str = bytesToHex(bytes);
return md5Str;
}
private static String bytesToHex(byte[] paramArrayOfByte)
{
String str1 = "";
String str2 = "";
for (int i = 0; i < paramArrayOfByte.length; ++i)
{
str2 = Integer.toHexString(paramArrayOfByte[i] & 0xFF);
if (str2.length() == 1)
str1 = str1 + "0";
str1 = str1 + str2;
}
return str1;
}
}
第二种结合base64加密
public static String encrypt(String origStr) throws NoSuchAlgorithmException {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] buf = md.digest(origStr.getBytes());
BASE64Encoder base = new BASE64Encoder();
String str = base.encode(buf);
return str;
}