MD5安全加密

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);
    }
}

 

posted @ 2017-09-05 10:07  BINGJJFLY  阅读(244)  评论(0编辑  收藏  举报