基于Java语言的MD5加密Base64转换方法
提供了基于MD5加密16位和32位的方法
1 import java.io.IOException; 2 import java.math.BigInteger; 3 import java.security.MessageDigest; 4 import java.security.NoSuchAlgorithmException; 5 import sun.misc.BASE64Decoder; 6 import sun.misc.BASE64Encoder; 7 /** 8 * <p>标题: 编码工具类</p> 9 * <p>功能: 对数据进行编码转换</p> 10 * 作者:赵力 11 */ 12 public class EncodeUtil 13 { 14 public static void main(String[] args) throws Exception 15 { 16 System.out.println(md5Encrypt16("需要进行MD5加密的字符串")); 17 } 18 19 /** 20 * MD5加密16位 21 * @param encryptStr 要加密数据 22 * @return 返回16位加密结果 23 * ZhaoLi 24 */ 25 public static String md5Encrypt16(String encryptStr) 26 { 27 return md5Encrypt32(encryptStr).substring(8, 24); 28 } 29 30 /** 31 * MD5加密32位 32 * @param encryptStr 要加密数据 33 * @return 32位加密结果 34 * ZhaoLi 35 */ 36 public static String md5Encrypt32(String encryptStr) 37 { 38 MessageDigest md5; 39 try 40 { 41 md5 = MessageDigest.getInstance("MD5"); 42 byte[] md5Bytes = md5.digest(encryptStr.getBytes()); 43 StringBuffer hexValue = new StringBuffer(); 44 for (int i = 0; i < md5Bytes.length; i++) 45 { 46 int val = (md5Bytes[i]) & 0xff; 47 if (val < 16) 48 { 49 hexValue.append("0"); 50 } 51 hexValue.append(Integer.toHexString(val)); 52 } 53 return hexValue.toString().toLowerCase(); 54 } catch (Exception e) 55 { 56 throw new RuntimeException(e); 57 } 58 } 59 60 /** 61 * 结合base64实现md5加密 62 * @param msg 待加密字符串 63 * @return 获取md5后转为base64 64 * @throws Exception 65 */ 66 public static String md5EncryptBase64(String msg) throws Exception 67 { 68 return msg == null ? null : base64Encode(md5(msg)); 69 } 70 71 /** 72 * 将byte[]转为各种进制的字符串 73 * @param bytes byte[] 74 * @param radix 可以转换进制的范围,从Character.MIN_RADIX到Character.MAX_RADIX,超出范围后变为10进制 75 * @return 转换后的字符串 76 */ 77 public static String binary(byte[] bytes, int radix) 78 { 79 return new BigInteger(1, bytes).toString(radix);// 这里的1代表正数 80 } 81 82 /** 83 * base 64 encode 84 * @param bytes 待编码的byte[] 85 * @return 编码后的base 64 code 86 */ 87 public static String base64Encode(byte[] bytes) 88 { 89 return new BASE64Encoder().encode(bytes); 90 } 91 92 /** 93 * base 64 decode 94 * @param base64Code 待解码的base 64 code 95 * @return 解码后的byte[] 96 * @throws Exception 97 */ 98 public static byte[] base64Decode(String base64Code) 99 { 100 try 101 { 102 return base64Code == null ? null : new BASE64Decoder().decodeBuffer(base64Code); 103 } catch (IOException e) 104 { 105 throw new RuntimeException("报错内容", e); 106 } 107 } 108 109 /** 110 * 获取byte[]的md5值 111 * @param bytes byte[] 112 * @return md5 113 * @throws Exception 114 */ 115 public static byte[] md5(byte[] bytes) 116 { 117 MessageDigest md; 118 try 119 { 120 md = MessageDigest.getInstance("MD5"); 121 } catch (NoSuchAlgorithmException e) 122 { 123 throw new RuntimeException("报错内容", e); 124 } 125 md.update(bytes); 126 return md.digest(); 127 } 128 129 /** 130 * 获取字符串md5值 131 * @param msg 132 * @return md5 133 * @throws Exception 134 */ 135 public static byte[] md5(String msg) 136 { 137 return msg == null ? null : md5(msg.getBytes()); 138 } 139 }