MD5加密的基本过程:
1、将一个字符串通过getBytes()方法编码为一个字节数组byte[] bytes;
2、将bytes数组经过MD5算法的加密后获得到一个长度为16的新的字节数组md5bytes;
3、将md5bytes数组转换为一个字符串进行保存(一般的该过程是将加密获得的md5bytes转换为十六进制[0~F]保存的32位的字符串)
具体实现:
1 package com.atguigu.surveypark.util; 2 import java.security.MessageDigest; 3 public class DataUtil { 4 /** 5 * 使用md5算法进行加密 6 */ 7 public static String md5(String src){ 8 try { 9 StringBuffer buffer = new StringBuffer(); 10 char[] chars = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; 11 byte[] bytes = src.getBytes(); 12 MessageDigest md = MessageDigest.getInstance("MD5"); 13 byte[] targ = md.digest(bytes); 14 for(byte b: targ){ 15 buffer.append(chars[(b >> 4) & 0x0F]); //当前字节向右移动四位后与(0x00001111)进行"与操作",即对高四位进行与操作。 16 buffer.append(chars[b & 0x0F]); //对低四位进行与操作。 17 } 18 return buffer.toString(); 19 } catch (Exception e) { 20 e.printStackTrace(); 21 } 22 return null ; 23 } 24 }
除了自己实现对加密后的字节数组的转换工作之外,还可以直接使用Apache提供的commons-codec.jar包提供的方法来完成对字符串加密处理工作。
如:String md5Digest = DigestUtils.md5Hex("12345");
关于commons-codec.jar包参考:http://www.cnblogs.com/tingzi/archive/2012/08/17/2643742.html(Commons codec jar包详解)