package com.jerome.utils.crpt;
import java.security.MessageDigest;
/**
* @author JeromeSong<br>
* MD5加密算法--单向加密用于验证,常与Base64一起使用
*/
public class MD5 {
public static String encrypt(String str) {
MessageDigest md5 = null;
try {
md5 = MessageDigest.getInstance("MD5");
} catch (Exception e) {
e.printStackTrace();
return null;
}
char[] charArray = str.toCharArray();
byte[] byteArray = new byte[charArray.length];
for (int i = 0; i < charArray.length; i++) {
byteArray[i] = (byte) charArray[i];
}
byte[] md5Bytes = md5.digest(byteArray);
StringBuffer hexValue = new StringBuffer();
// 写法(1),忒不专业,不推荐////////////////////
// for (int i = 0; i < md5Bytes.length; i++) {
// int val = ((int) md5Bytes[i]) & 0xff;
// if (val < 16) {
// hexValue.append("0");
// }
// hexValue.append(Integer.toHexString(val));
// }
// 写法(2)/////////////////////////
// for (int i = 0; i < arr.length; ++i) {
// sb.append(Integer.toHexString((arr[i] & 0xFF) | 0x100).substring(1,
// 3));
// }
// 写法(3)/////////////////////////////////////
// for (byte b : toencode) {
// sb.append(Integer.toHexString((b & 0xf0) >>> 4));
// sb.append(Integer.toHexString(b & 0x0f));
// }
// ////////////////////////////////////
for (int i = 0; i < md5Bytes.length; i++) {
hexValue.append(String.format("%02x", ((int) md5Bytes[i]) & 0xff));
}
return hexValue.toString();
}
public static void main(String[] args) {
System.out.println(encrypt("123456"));
}
}