package com.ibs.auth.controller;

 

import java.security.MessageDigest;

 

/** 

 * 采用MD5加密解密 

 * @author tfq 

 * @datetime 2011-10-13 

 */  

public class Md5 {  

  

    /*** 

     * MD5加码 生成32位md5码 

     */  

    public static String string2MD5(String inStr){  

        MessageDigest md5 = null;  

        try{  

            md5 = MessageDigest.getInstance("MD5");  

        }catch (Exception e){  

            System.out.println(e.toString());  

            e.printStackTrace();  

            return "";  

        }  

        char[] charArray = inStr.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();  

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

        }  

        return hexValue.toString();  

  

    }  

  

    /** 

     * 加密解密算法 执行一次加密,两次解密 

     */   

    public static String convertMD5(String inStr){  

  

        char[] a = inStr.toCharArray();  

        for (int i = 0; i < a.length; i++){  

            a[i] = (char) (a[i] ^ 't');  

        }  

        String s = new String(a);  

        return s;  

  

    }  

  

    // 测试主函数  

    public static void main(String args[]) {  

        String s = new String("/ibs-auth/managePrevention/complaintfusion/getMcMain.html_dc=1421898361060&gbExportDataParams.fileName=%E6%8A%95%E8%AF%89%E8%9E%8D%E5%90%88&gbUuidParams.modelUuid=17db3b6c-0607-4e07-9d23-5b4d838ec00b&gbTimeParams.initUnit=1&gbTimeParams.isAbsolute=false&gbTimeParams.startTime=2015-01-22%2010%3A00%3A00&gbTimeParams.endTime=2015-01-22%2011%3A00%3A00&gbBTypeParams.bType=ALL&userFilterParams.userFilterType=imsi&userFilterParams.userFilterList=3211&gbMMSFilterParams.onlyFailure=false&gbFlowParams.flows=voicecall&total=0&page=1&start=0&limit=500");  

        System.out.println("原始:" + s);  

        System.out.println("MD5后:" + string2MD5(s));  

        //System.out.println("加密的:" + convertMD5(s));  

        System.out.println("解密的:" + convertMD5(convertMD5(s)));  

  

    }  

}