chenjiahe
2022-06-15 11f9478b32b710e022c328972fd2e07c72a62df8
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
package com.hx.util;
 
import java.util.*;
 
/***
 * �?单的加密程序,和解密程序
 * 
 * @author mq.c
 *
 */
public class SimpleEncrypt {
 
    /**
     * 获取指定长度随机的字符串
     * 
     * @param getNum
     * @return
     */
    private static String generateCheckCode(Integer getNum) {
        // abcdefghijklmnopqrstuvwxyz
        // String chars =
        // "123456789.AB2CD3EF7G;HI5JK5LMN/OPQR8ST.UVW7X9YZ?~!@#$%^&*()_+{}:>?<|/.,';][=-";
        // String chars =
        // "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz~!@#$%^&*()_+{}|:<>?/.,';][\\=-";
        String chars = "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789abcdefghijklmnopqrstuvwxyz._?";
        String[] charsx = chars.split("");
        // String[] charsx = chars.split("");
        List<String> list = Arrays.asList(charsx);
        Collections.shuffle(list);
        StringBuffer buff = new StringBuffer();
        Random random = new Random();
        for (int i = 0; i < getNum; i++) {
            int rand = random.nextInt(list.size());
            // buff.append(chars.charAt(rand));
            buff.append(list.get(rand));
        }
        return buff.toString();
    }
 
    /**
     * 对字符串进行简易加密(不要在意那种很容易被人破解的小细节)
     * 该加密采用"前面13位随机码"+dataString+"后9位随机码",组拼成一个字符串,进行BASE64加密得出的加密值
     * 
     * @param dataString
     *            要进行加密的数据源
     * @return
     */
    public static String simpleEnCode(String dataString) {
        // 组拼随机值
        String ranString = generateCheckCode(13).toString() + dataString + generateCheckCode(9).toString();
        String enCode = new String(Base64.getEncoder().encode(ranString.getBytes()));
        return enCode;
    }
 
    /***
     * 对用com.bang.units.SimpleEncrypt.simpleEnCode加密过的字符串进行解密
     * 
     * 该加密采用"前面13位随机码"+dataString+"后9位随机码",组拼成一个字符串,进行BASE64加密得出的加密值
     * 
     * @param dataString
     *            要进行解密的数据源
     * @return
     */
    public static String simpleDeCode(String dataString) throws Exception {
        // 进行解密sun.misc.BASE64Decoder.BASE64Decoder()
 
        byte[] enCode = Base64.getDecoder().decode(dataString);
        // 解得随机值
        String ranString = new String(enCode);
 
        // System.out.println("simpleDeCode:" + ranString);
        // 截取出有效位置参数
        String daString = ranString.substring(13, ranString.length() - 9);
 
        return daString;
    }
 
    public static void main(String[] args) throws Exception {
        String chars = "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ?~!@#$%^&*()_+{}:>?<|/.,';][=-`";
        String[] charsx = chars.split("");
        List<String> list = Arrays.asList(charsx);
        Collections.shuffle(list);
        // for (String string : list) {
        // System.out.println(string);
        // }
 
        String str = "15648sadf";
        String eStr = simpleEnCode(str);
        System.out.println(eStr);
        String dStr = simpleDeCode(eStr);
        System.out.println(dStr);
 
    }
 
}