· 8 years ago · Dec 24, 2017, 07:00 AM
1import javax.crypto.Cipher;
2import javax.crypto.SecretKey;
3import javax.crypto.SecretKeyFactory;
4
5import javax.crypto.spec.PBEKeySpec;
6import javax.crypto.spec.PBEParameterSpec;
7
8import com.sun.identity.shared.encode.Base64;
9
10public class Test {
11
12 private static String KEYGEN_ALGORITHM = "PBEWithMD5AndDES";
13 private static String KEYGEN_ALGORITHM_PROVIDER = "SunJCE";
14
15 private static String CRYPTO_DESCRIPTOR = "PBEWithMD5AndDES";
16 private static String CRYPTO_DESCRIPTOR_PROVIDER = "SunJCE";
17
18 private static String PASSWORD = "KmhUnWR1MYWDYW4xuqdF5nbm+CXIyOVt";
19
20 private static final byte[] ___y = { 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
21 0x01, 0x01 };
22
23 private static int ITERATION_COUNT = 5;
24
25 public static void main(String [] args) throws Exception {
26 SecretKey pbeKey = SecretKeyFactory.getInstance(KEYGEN_ALGORITHM, KEYGEN_ALGORITHM_PROVIDER)
27 .generateSecret(new PBEKeySpec(PASSWORD.toCharArray()));
28
29 PBEParameterSpec pbeParameterSpec = new PBEParameterSpec(
30 ___y, ITERATION_COUNT);
31
32 Cipher pbeCipher = Cipher.getInstance(CRYPTO_DESCRIPTOR,
33 CRYPTO_DESCRIPTOR_PROVIDER);
34
35 pbeCipher.init(Cipher.DECRYPT_MODE, pbeKey,
36 pbeParameterSpec);
37
38 String encoded = "AQICeDI4rFG/LOfYxgIM69Ut/Tecv6VsjyVA";
39 byte[] encData = Base64.decode(encoded.trim());
40
41 byte raw[] = getRaw(encData);
42 System.out.println("raw length = " + raw.length);
43 byte [] result = pbeCipher.doFinal(raw);
44
45 System.out.println("result = " + result);
46 }
47
48 private static byte[] getRaw(byte share[]) {
49 byte data[] = new byte[share.length - 11];
50
51 for (int i = 11; i < share.length; i++) {
52 data[i - 11] = share[i];
53 }
54
55 return data;
56 }
57
58
59}