puzhibing
2022-08-22 1421f8e9c308c4741cb396309035009393b5b036
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
package com.stylefeng.guns.modular.system.util;
 
import com.alibaba.fastjson.JSONObject;
import com.stylefeng.guns.core.shiro.ShiroKit;
 
import java.security.MessageDigest;
import java.util.HashMap;
import java.util.Map;
 
public class MD5AndKL {
    
    /**
     * MD5加码。32位
     * 
     * @param inStr
     * @return
     */
    public static String MD5(String inStr) {
        MessageDigest md5 = null;
        try {
            md5 = MessageDigest.getInstance("MD5");
        } catch (Exception e) {
            throw new RuntimeException(e.toString());
        }
        byte[] md5Bytes = md5.digest(inStr.getBytes());
        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();
    }
 
    /**
     * 可逆的加密算法
     * 
     * @param inStr
     * @return
     */
    public static String KL(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;
    }
 
    /**
     * 加密后解密
     * 
     * @param inStr
     * @return
     */
    public static String JM(String inStr) {
        char[] a = inStr.toCharArray();
        for (int i = 0; i < a.length; i++) {
            a[i] = (char) (a[i] ^ 't');
        }
        String k = new String(a);
        return k;
    }
 
 
 
    private static String byteArrayToHexString(byte b[]) {
        StringBuffer resultSb = new StringBuffer();
        for (int i = 0; i < b.length; i++)
            resultSb.append(byteToHexString(b[i]));
 
        return resultSb.toString();
    }
 
    private static String byteToHexString(byte b) {
        int n = b;
        if (n < 0)
            n += 256;
        int d1 = n / 16;
        int d2 = n % 16;
        return hexDigits[d1] + hexDigits[d2];
    }
 
    public static String MD5Encode(String origin, String charsetname) {
        String resultString = null;
        try {
            resultString = new String(origin);
            MessageDigest md = MessageDigest.getInstance("MD5");
            if (charsetname == null || "".equals(charsetname)){
                resultString = byteArrayToHexString(md.digest(resultString.getBytes()));
            }else{
                resultString = byteArrayToHexString(md.digest(resultString.getBytes(charsetname)));
            }
        } catch (Exception exception) {
            exception.printStackTrace();
        }
        return resultString;
    }
 
    private static final String hexDigits[] = { "0", "1", "2", "3", "4", "5",
            "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
 
    public static void main(String args[]) {
         
        System.out.println("MD5后再加密:" + KL(MD5("123456")));
        System.out.println(MD5("123456"));
        // System.out.println("加密:" + KL(MD5("123456")));
        // s = KL(s);
        // System.out.println("解密:" + KL("81dc9bdb52d04dc20036dbd8313ed055"));
        // System.out.println("解密:" + JM(KL(s)));
        // System.out.println("解密为MD5后的:" + KL(KL(MD5(s))));
        // System.out.println(JM("5d62957bb57d3e49dcf48a0df064be4c"));
        // System.out.println(MD5AndKL.KL(MD5AndKL.MD5("admin"+"87654321")));
        System.out.println(ShiroKit.md5("111111", "SA;d5#"));
        Map<String, String> map = new HashMap<>();
        map.put("orderString","alipay_sdk=alipay-sdk-java-4.8.10.ALL&app_id=2019080866147541&biz_content=%7B%22body%22%3A%22%E6%94%B9%E6%B4%BE%E8%AE%A2%E5%8D%95%22%2C%22out_trade_no%22%3A%227_1%22%2C%22product_code%22%3A%22QUICK_MSECURITY_PAY%22%2C%22subject%22%3A%22%E6%94%B9%E6%B4%BE%E8%AE%A2%E5%8D%95%22%2C%22timeout_express%22%3A%2230m%22%2C%22total_amount%22%3A%220.01%22%7D&charset=UTF-8&format=json&method=alipay.trade.app.pay&notify_url=http%3A%2F%2F47.107.98.201%3A8007%2Fbase%2FaliReassign&sign=GSn1vEUQuUmmsyLMkx78IIdOB2VK08eE%2FB%2FrdZNt6FzWP%2FCf22tlYKVoaJTsPh4rp3A2tKQ9o9KZNIt3MB2IEL9wp6n63theHzTUcGTr4YFzgtvOUtxGEX2%2F195%2Fwo1rrhHy9NbW0WQCEnS87VLSzQYGPS%2FXrxbqfNgtEAkI%2FtKKiBs%2B7RsFLbfZLkh5jPUblRXQ94unfbxaIC2tp60JgLEq1l6XUCPjQ0MPJqPx8SBpeUB%2BoDDc38s%2FxdmqcnmEhwVyI5WbNh7zPYLutbojQQdzEBINPyYLFLWCn8w1G6HCnu1j%2F20eRLyB8Etdr%2FWAZ%2FUGywsYRPFHfGi9TqG6QA%3D%3D&sign_type=RSA2&timestamp=2020-12-25+21%3A16%3A32&version=1.0");
        System.out.println(map);//就是orderString 可以直接给客户端请求,无需再做处理。
        ResultUtil resultUtil = ResultUtil.success(map);
        System.out.println(resultUtil.getCode()==200);
    }
}