· 7 years ago · Jan 21, 2019, 07:24 AM
1package cn.soulapp.android.utils.a;
2
3import com.d.a.j;
4import java.security.InvalidKeyException;
5import java.security.NoSuchAlgorithmException;
6import java.security.spec.InvalidKeySpecException;
7import java.util.Locale;
8import javax.crypto.Cipher;
9import javax.crypto.SecretKey;
10import javax.crypto.SecretKeyFactory;
11import javax.crypto.spec.DESKeySpec;
12
13public class a
14{
15 private static final String a = "DES";
16 private static final char[] b = "0123456789ABCDEF".toCharArray();
17
18 public static String a(String paramString1, String paramString2)
19 {
20 try
21 {
22 Cipher localCipher = Cipher.getInstance("DES");
23 localCipher.init(1, c(paramString2));
24 paramString2 = a.a(localCipher.doFinal(paramString1.getBytes()));
25 return paramString2;
26 }
27 catch (Exception paramString2) {}
28 return paramString1;
29 }
30
31 public static byte[] a(String paramString)
32 {
33 paramString = paramString.trim().replace(" ", "").toUpperCase(Locale.US);
34 int j = paramString.length() / 2;
35 byte[] arrayOfByte = new byte[j];
36 int i = 0;
37 while (i < j)
38 {
39 int k = i * 2;
40 int m = k + 1;
41 StringBuilder localStringBuilder = new StringBuilder();
42 localStringBuilder.append("0x");
43 localStringBuilder.append(paramString.substring(k, m));
44 localStringBuilder.append(paramString.substring(m, m + 1));
45 arrayOfByte[i] = ((byte)(Integer.decode(localStringBuilder.toString()).intValue() & 0xFF));
46 i += 1;
47 }
48 return arrayOfByte;
49 }
50
51 public static String b(String paramString)
52 {
53 StringBuilder localStringBuilder = new StringBuilder();
54 paramString = paramString.getBytes();
55 int i = 0;
56 while (i < paramString.length)
57 {
58 localStringBuilder.append(b[((paramString[i] & 0xFF) >> 4)]);
59 localStringBuilder.append(b[(paramString[i] & 0xF)]);
60 localStringBuilder.append(' ');
61 i += 1;
62 }
63 return localStringBuilder.toString().trim();
64 }
65
66 public static String b(String paramString1, String paramString2)
67 {
68 try
69 {
70 Cipher localCipher = Cipher.getInstance("DES/ECB/pkcs5padding");
71 localCipher.init(2, c(paramString2));
72 paramString2 = new String(localCipher.doFinal(a.a(paramString1.toCharArray())), "utf-8");
73 return paramString2;
74 }
75 catch (Exception paramString2)
76 {
77 j.b(paramString2.getMessage(), new Object[0]);
78 }
79 return paramString1;
80 }
81
82 private static SecretKey c(String paramString)
83 throws NoSuchAlgorithmException, InvalidKeySpecException, InvalidKeyException
84 {
85 SecretKeyFactory localSecretKeyFactory = SecretKeyFactory.getInstance("DES");
86 paramString = new DESKeySpec(paramString.getBytes());
87 localSecretKeyFactory.generateSecret(paramString);
88 return localSecretKeyFactory.generateSecret(paramString);
89 }
90
91 static class a
92 {
93 private static char[] a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".toCharArray();
94 private static byte[] b = new byte['��'];
95
96 static
97 {
98 int i = 0;
99 while (i < 256)
100 {
101 b[i] = -1;
102 i += 1;
103 }
104 i = 65;
105 while (i <= 90)
106 {
107 b[i] = ((byte)(i - 65));
108 i += 1;
109 }
110 i = 97;
111 while (i <= 122)
112 {
113 b[i] = ((byte)(i + 26 - 97));
114 i += 1;
115 }
116 i = 48;
117 while (i <= 57)
118 {
119 b[i] = ((byte)(i + 52 - 48));
120 i += 1;
121 }
122 b[43] = 62;
123 b[47] = 63;
124 }
125
126 static String a(byte[] paramArrayOfByte)
127 {
128 char[] arrayOfChar1 = new char[(paramArrayOfByte.length + 2) / 3 * 4];
129 int j = 0;
130 int i = 0;
131 while (j < paramArrayOfByte.length)
132 {
133 int m = (paramArrayOfByte[j] & 0xFF) << 8;
134 int k = j + 1;
135 int i1 = paramArrayOfByte.length;
136 int n = 1;
137 if (k < i1)
138 {
139 m |= paramArrayOfByte[k] & 0xFF;
140 k = 1;
141 }
142 else
143 {
144 k = 0;
145 }
146 m <<= 8;
147 i1 = j + 2;
148 if (i1 < paramArrayOfByte.length) {
149 m |= paramArrayOfByte[i1] & 0xFF;
150 } else {
151 n = 0;
152 }
153 char[] arrayOfChar2 = a;
154 i1 = 64;
155 if (n != 0) {
156 n = m & 0x3F;
157 } else {
158 n = 64;
159 }
160 arrayOfChar1[(i + 3)] = arrayOfChar2[n];
161 n = m >> 6;
162 arrayOfChar2 = a;
163 m = i1;
164 if (k != 0) {
165 m = n & 0x3F;
166 }
167 arrayOfChar1[(i + 2)] = arrayOfChar2[m];
168 k = n >> 6;
169 arrayOfChar1[(i + 1)] = a[(k & 0x3F)];
170 arrayOfChar1[(i + 0)] = a[(k >> 6 & 0x3F)];
171 j += 3;
172 i += 4;
173 }
174 return new String(arrayOfChar1);
175 }
176
177 static byte[] a(char[] paramArrayOfChar)
178 {
179 int j = (paramArrayOfChar.length + 3) / 4 * 3;
180 int i = j;
181 if (paramArrayOfChar.length > 0)
182 {
183 i = j;
184 if (paramArrayOfChar[(paramArrayOfChar.length - 1)] == '=') {
185 i = j - 1;
186 }
187 }
188 j = i;
189 if (paramArrayOfChar.length > 1)
190 {
191 j = i;
192 if (paramArrayOfChar[(paramArrayOfChar.length - 2)] == '=') {
193 j = i - 1;
194 }
195 }
196 byte[] arrayOfByte = new byte[j];
197 j = 0;
198 int k = 0;
199 int n = 0;
200 for (int i1 = 0; j < paramArrayOfChar.length; i1 = i)
201 {
202 int i3 = b[(paramArrayOfChar[j] & 0xFF)];
203 int i2 = k;
204 int m = n;
205 i = i1;
206 if (i3 >= 0)
207 {
208 i1 += 6;
209 n = n << 6 | i3;
210 i2 = k;
211 m = n;
212 i = i1;
213 if (i1 >= 8)
214 {
215 i = i1 - 8;
216 arrayOfByte[k] = ((byte)(n >> i & 0xFF));
217 i2 = k + 1;
218 m = n;
219 }
220 }
221 j += 1;
222 k = i2;
223 n = m;
224 }
225 if (k == arrayOfByte.length) {
226 return arrayOfByte;
227 }
228 throw new Error("miscalculated data length!");
229 }
230 }
231}