编辑代码


import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

class test {
    public static void main(String[] args) {
        String req = "df2687ec6148b926c4b54c2ff118b1c211f5a49d6c9422e5bea6c9f304e61cfc3161a472363fabb1735719beedb487dca1004749e4ceef5a402a91b4969d95fcb6bf05e67988416104155ccadff07e0da895af5ac11395561c2d5399e500373a0dab70b5598f7c01e4b0c534e14543019862f15c922bc537b6dd04ae10afc7fe86fe4e2ec7a193323e645be8484c6454193316510eeb4854e517f9e19cb928fda9feb43207f2f01d3a747a8da625a251252282cd5c2952af67a6fe8579fc4ade33c1984930de978e285be098ed8ea82b9af0597b002c0beec9ec15164c2ae9ce1046a197cd2185c14ec860e870787d719b6a01e130eabf7d847597ffebcac89452e529aaf336c18604155ccadff07e0d6c3773f74509ee72667d951cef5dfec8667a57c110adc155004625983899f761823e333936a9df6736db6ede8c0bd805667d951cef5dfec8ed31c34fa2920c5081c6d325a40b7b9f880296db82077d1e0b4b7b0162346a47ac047d83b62ba6a1b4c21cf94944f8d2d93da9704a89950f13a3652ea06e5cf6943d3557eb0a251eeba964e8bd7ddb75eba964e8bd7ddb7549ef119a075e93f8823e333936a9df671933551aae377587cfe7ac8023742874ed31c34fa2920c50e39e9d1fe4513563761a9b0c06f18d03619b5a498c8e7572d746d3ec557a18b76cf83d5dd4cb4b08046cab65b20112136fcae383b6c8780bddd1977b886e0a5ef1a41baf3b6f3285e36da37ac4958b8c3bbe7fa5390479390fa96b9efba36f886986b8f5dfb4dca16aeed8bb18d3374b85e9133b8c7c1c8c939c5b8a6bfdd0363c482237d29445edd68407bb007cd57d1634c9ef4d4d344d56c291dd9eb238c0e7fec6bc05abac97d68407bb007cd57d38e4a94a3935d96098cb5147eb72395c4549fd75fff94fb80fe94ce2384ee99c3a47e842dddc37bd21c3c97ba413c213a3e11bde9f84153a15316b64d5ddf406dfa1f92d156bdf7db45f5068a49de42e1f091b72af3266848cf65e28c455685abdef19fbc51933296e4fd802cbcef8ea3562a1aef0fde56df0b24c4a4d63ed667aae6f8e8f1c5799627a0cc21f46db3e4f42ef98e47e44e8afb7a6bfc8ab57043733a369565abf5b6e4fd802cbcef8ea452c16efb7e91e179a65907fe7848b2a49b9ae4c99206927fae47444a64fecda316041169259a5d311476a40e58a60386d4fff4a6c0116ffce9b77ce4cf9a6b23db090cccb6247c3859832fd9a78bfc2c8a464f9fcaa88c2fe07bf9bc83469da82428140d3798089b9516c81cb752e42fb5729a08ffd49d6a9b91a0d59669f4e63c2afb2f146959345228c693ff0f572b651057442883af494fd93166c4fdd780b03351eb2e24355526614063228fa86f0cdcf243a4c1f571adc28044cd41a451ae47c3349d1ee85dfa6e1d4c8c8b19bee3dd2469c9e76ac20366fc66f364a158cf65e28c455685a3e52873a411ef11c98a80589f77402362dee0d380b5b79c9f16c556e74a8f0e7db89fc8d1116acb67074fdd4e9e78d62ef6a381a2e514fddfcbfb69f05456f28bef0a8de1fc911e67b74a9bdea1bd7c7c8dcaebf7338889f5a03edc38d7c68d411388b9e69e49976ec0e3d3035d48d93812f9d7c9f8345e37f6ca47db0cb53ca7f468e884f37cbd537661d7dc151fe4580a0871cd946fdae";
        
        System.out.println(decryptMode(req));
    }








    private static final String ALGORITHM = "DESede";

    private static final String PASSWORD_CRYPT_KEY = "chi1he2wan@le#jin!zai%mei#tuan&dian@ping...";

    /**
     * 根据字符串生成密钥字节数组
     *
     * @param keyStr 密钥字符串
     * @return byte
     */
    private static byte[] build3DesKey(String keyStr) {
        byte[] key = new byte[24];
        byte[] temp = keyStr.getBytes();

        if (key.length > temp.length) {
            //如果temp不够24位,则拷贝temp数组整个长度的内容到key数组中
            System.arraycopy(temp, 0, key, 0, temp.length);
        } else {
            //如果temp大于24位,则拷贝temp数组24个长度的内容到key数组中
            System.arraycopy(temp, 0, key, 0, key.length);
        }
        return key;
    }

    /**
     * 将表示16进制值的字符串转换为byte数组, 和public static String byteArr2HexStr(byte[] arrB)
     * 互为可逆的转换过程
     *
     * @param strIn 需要转换的字符串
     * @return 转换后的byte数组
     */
    private static byte[] hexStr2ByteArr(String strIn) {
        byte[] arrB = strIn.getBytes();
        int iLen = arrB.length;

        // 两个字符表示一个字节,所以字节数组长度是字符串长度除以2
        byte[] arrOut = new byte[iLen / 2];
        for (int i = 0; i < iLen; i = i + 2) {
            String strTmp = new String(arrB, i, 2);
            arrOut[i / 2] = (byte) Integer.parseInt(strTmp, 16);
        }
        return arrOut;
    }

    /**
     * 解密函数
     *
     * @param str 密文的字节数组
     * @return 明文
     */
    public static String decryptMode(String str) {
        try {
            SecretKey desKey = new SecretKeySpec(build3DesKey(PASSWORD_CRYPT_KEY), ALGORITHM);
            Cipher c1 = Cipher.getInstance(ALGORITHM);
            c1.init(Cipher.DECRYPT_MODE, desKey);
            return new String(c1.doFinal(hexStr2ByteArr(str)));
        } catch (Exception e) {
        }
        return "";
    }
}