package com.wjz.util;import java.security.MessageDigest;import org.apache.log4j.Logger;/** * MD5安全加密 * @author wjz * */public class MD5Util { private static Logger logger = Logger.getLogger(MD5Util.class); private MD5Util(){ } /** * MD5安全加密 * @param value 原始密文 * @param count 加密次数 * @return 加密密文 */ public static String encrypt(String value , int count){ String result = null; try { MessageDigest md5 = MessageDigest.getInstance("MD5"); //使用指定的字节加密原始字节 md5.update(value.getBytes()); //获得加密之后的字节 byte[] bs = md5.digest(); if(count > 1) result = encrypt(byte2String(bs), count-1); //把密文转换成十六进制的字符串形式 result = byte2String(bs); } catch (Exception e) { logger.error(e.getMessage()); e.printStackTrace(); } return result; } private static String byte2String(byte[] bs) { //String本质上是字符数组 //byte是字节,char是字符,一个字符等于两个字节 char[] hexDigits = {'0','1','2','3','4','5','6','7','8','9', 'A','B','C','D','E','F' }; int i = 0; char[] resultArry = new char[bs.length*2]; for (byte b : bs) { //0xf表示16进制的F=15(二进制:00001111); resultArry[i++] = hexDigits[b >>> 4 & 0xf]; resultArry[i++] = hexDigits[b & 0xf]; } // 字符数组组合成字符串返回 return new String(resultArry); }}