E1ED922C1E9526DD63272D7EC5C6CB77
2020-09-23 5c59454c8a12b1a19846c23c99cff612db037e4f
提交 | 用户 | age
5c5945 1 package com.hx.util;
E 2
3 import java.util.Arrays;
4 import java.util.Collections;
5 import java.util.List;
6 import java.util.Random;
7
8 import sun.misc.BASE64Decoder;
9 import sun.misc.BASE64Encoder;
10
11 /***
12  * �?单的加密程序,和解密程序
13  * 
14  * @author mq.c
15  *
16  */
17 public class SimpleEncrypt {
18
19     /**
20      * 获取指定长度随机的字符串
21      * 
22      * @param getNum
23      * @return
24      */
25     private static String generateCheckCode(Integer getNum) {
26         // abcdefghijklmnopqrstuvwxyz
27         // String chars =
28         // "123456789.AB2CD3EF7G;HI5JK5LMN/OPQR8ST.UVW7X9YZ?~!@#$%^&*()_+{}:>?<|/.,';][=-";
29         // String chars =
30         // "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz~!@#$%^&*()_+{}|:<>?/.,';][\\=-";
31         String chars = "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ123456789abcdefghijklmnopqrstuvwxyz._?";
32         String[] charsx = chars.split("");
33         // String[] charsx = chars.split("");
34         List<String> list = Arrays.asList(charsx);
35         Collections.shuffle(list);
36         StringBuffer buff = new StringBuffer();
37         Random random = new Random();
38         for (int i = 0; i < getNum; i++) {
39             int rand = random.nextInt(list.size());
40             // buff.append(chars.charAt(rand));
41             buff.append(list.get(rand));
42         }
43         return buff.toString();
44     }
45
46     /**
47      * 对字符串进行简易加密(不要在意那种很容易被人破解的小细节)
48      * 该加密采用"前面13位随机码"+dataString+"后9位随机码",组拼成一个字符串,进行BASE64加密得出的加密值
49      * 
50      * @param dataString
51      *            要进行加密的数据源
52      * @return
53      */
54     public static String simpleEnCode(String dataString) {
55         // 组拼随机值
56         String ranString = generateCheckCode(13).toString() + dataString + generateCheckCode(9).toString();
57
58         System.out.println(ranString);
59         // 进行加密 sun.misc.BASE64Encoder.BASE64Encoder()
60         String enCode = new BASE64Encoder().encodeBuffer(ranString.getBytes());
61
62         return enCode;
63     }
64
65     /***
66      * 对用com.bang.units.SimpleEncrypt.simpleEnCode加密过的字符串进行解密
67      * 
68      * 该加密采用"前面13位随机码"+dataString+"后9位随机码",组拼成一个字符串,进行BASE64加密得出的加密值
69      * 
70      * @param dataString
71      *            要进行解密的数据源
72      * @return
73      */
74     public static String simpleDeCode(String dataString) throws Exception {
75         // 进行解密sun.misc.BASE64Decoder.BASE64Decoder()
76         byte[] enCode = new BASE64Decoder().decodeBuffer(dataString);
77         // 解得随机值
78         String ranString = new String(enCode);
79
80         // System.out.println("simpleDeCode:" + ranString);
81         // 截取出有效位置参数
82         String daString = ranString.substring(13, ranString.length() - 9);
83
84         return daString;
85     }
86
87     public static void main(String[] args) throws Exception {
88         String chars = "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ?~!@#$%^&*()_+{}:>?<|/.,';][=-`";
89         String[] charsx = chars.split("");
90         List<String> list = Arrays.asList(charsx);
91         Collections.shuffle(list);
92         // for (String string : list) {
93         // System.out.println(string);
94         // }
95
96         String str = "15648sadf";
97         String eStr = simpleEnCode(str);
98         System.out.println(eStr);
99         String dStr = simpleDeCode(eStr);
100         System.out.println(dStr);
101
102     }
103
104 }