· 4 years ago · Apr 13, 2021, 10:40 PM
1/*
2 * To change this license header, choose License Headers in Project Properties.
3 * To change this template file, choose Tools | Templates
4 * and open the template in the editor.
5 */
6package blutesting;
7
8import java.io.File;
9import java.io.IOException;
10import java.io.UnsupportedEncodingException;
11import java.security.GeneralSecurityException;
12import java.security.PrivateKey;
13import java.util.logging.Level;
14import java.util.logging.Logger;
15import javax.crypto.Cipher;
16import javax.crypto.SecretKey;
17import javax.crypto.spec.SecretKeySpec;
18import org.apache.commons.io.FileUtils;
19import org.apache.commons.ssl.Base64;
20import org.apache.commons.ssl.PKCS8Key;
21
22
23/**
24 *
25 * @author antonio
26 */
27public class BluTesting {
28
29 /**
30 * @param args the command line arguments
31 */
32 public static void main(String[] args) {
33
34 try {
35 // TODO code application logic here
36 String cadenaLlave = args[1];
37 //String cadenaLlave = "OfI970fYsqt+5H7sgNfOEP5iYdKiOHtcmkKKZLdF932STmS8trGNlYxkyVQ5MvapnhFgKL2j64zR4cyxY9cWxf2c7M2jvAMUGZ4ri97XXI+eNCo/7LPcQkDc8VE4pn0h8LxQFCHWFt/C8gVWx2Yj2AfnnOSHl2SiWIY03sY5sev8MNWPa1pIHTwCCe6/sIlm2oHKqI3fTL5h+5SjPwkO93+qFaRKrUfdz61KeVSVY11aoeTSdZm2jZYfwheaUL0CMuFxVaYEMDQKpYZ5O8JtK1DKIOb/addgvHAFtQ9rIqwC1+cuEyEvCG/rAR9BwBJuoFsp7AahqHJAO9cubgeLBA==";
38 //String cadenaLlave = args[0].toString();
39 String pass = "7h8j9k0l!!@@";
40 //String cadenaResponse = "4X0SEILWPcRfMPrN8CTAsr1C3u/i+dxqB07incfuZ8nB/tM4WAwuc/l5k2cQYWeI25mrowQ8hWYDg0HTCQD59w1G7cTdy8pJy4Zwh8q5LB39PoQs9OxzX1VucwzPP+0uQj94zGjgiYxMjUCDn6XNDRRuMp1ZAiK6p1G/cJDVE08ON0fNf0Lz1AxbWOO2F8uFTNkIrr5YKb4KfopkDewGADEjotycjS1IFEllTf6aUPkmnMAradu+z1MvpRK3pWM4Hj4GvixYahCWRynIzx2l0RHShaw0bkrXyipJuztmBgzlXwnS0xCEcz/oLrvfbJnMfklWCnpm81iq70C9kUMoc+p2NMBPEx6tCdOW3PoPbXk=";
41 String cadenaResponse = args[0];
42 String llaveCadena = "-----BEGIN RSA PRIVATE KEY-----\n" +
43 "Proc-Type: 4,ENCRYPTED\n" +
44 "DEK-Info: DES-EDE3-CBC,D1F3DB99C015878F\n" +
45 "\n" +
46 "LFZAl5+aMk3+B81aVP2gHCV8b7W5dwInOQDJNvKxwZUGwLSUs0xH8iNqb23c0BqK\n" +
47 "Tq3L6Eta7UaUhGvdl/iV7P+hijvaiunBF9qCo1YuD1y/yuy4Ri8cmxbuvaoYiVXr\n" +
48 "9L/UJlAii5vTBkcGeY+d0uIErG9A0gdrYA0aZWVPjtD9/2rIpmAYWpttCoPFZEr2\n" +
49 "hN4VAaJqmWX2I35BhSqs5vNFnnFWt6f67IWmI8MDKpYzVPI57+0HjHLP3B5ig9cO\n" +
50 "EeLoBeXEXL7Mtf4PYQ2j34MuzH8R4w7ElRVU9B7RdiXlDkJp71qJm7ndAvlRl6Wj\n" +
51 "Sa37gjzHC4Dgc5mM2M2gK3pBSeycCAk1XUFDS0vNoatdDp5KJN+T2MO15qM4ofMe\n" +
52 "Aeff+KYOjt7oWT1xy+V9gSzpcyWF3wfTLdtcMbZn9CWU3FNmv6be9HD9ZlD6IxJJ\n" +
53 "1uBDuxt1FA0kPlJ76RiGnnf7cSJEbysS3ZBV4d5dL47tMCqggBPK1M415wj8pZHI\n" +
54 "fhRynF1cb6cVWGJ4RMtiRIvzcAHQ8hgalXp6TJqfc1vEJA0N8Q5cZoXyVTxJuo2T\n" +
55 "qoPnlFYuzCRLQ8FZvF/w0uaGw9xIMep9lbsd6lPZIHvk26/dnHjlCO3VLUy7Z8hv\n" +
56 "alj9r2q1JrFz9RfUBEkEOeM0ooQF8yHKvN/oK8/+eOvC7m8259GGuZkkBO2Ms1SR\n" +
57 "yEv9OWWnikw8sJo1Ly4UbEY9EkSY/90nlxsL5naOASUCMXNxoVWnZOtVZI/MgzjT\n" +
58 "qJHB8+h3/KOX2VrukHgdLLxkI29fCwxr5fSlGwnmzbwXTOc8McjyS5k82NOm+XMq\n" +
59 "UlI+o18tfceLKZnKuUrZiMEU4plSehTIQJXU8DsHijBdRYhjo9+3X7E5sRJE51wY\n" +
60 "Co9kVzgpGxsI6hbgkRhqjM7yDPV6UAI2B+hFuiEqrxFApDdrbcczJiLv4A4+ASQg\n" +
61 "qpoYm/i0ePYXx0fbgAYy4jwDgGrDRVNA6FkdWKIn/R4lVi/LxjUDyZkstLIi3Wmo\n" +
62 "/0+gw2IA7NaeOE9X2zlRXENPx1yEQ6FCfdWRG9DOrrihqTm5NoPj3eNWG+J0cIoA\n" +
63 "ANaXt6iO2qkgukY+7ayLNBXWzBvVOPPvp5IBF/EyLxpT/fbuO8cy1Hi4p2MQVkcB\n" +
64 "jvJ3UPorp02ouhp2Bb7LTdqnWTO1Ag987tT0JRnWIjUX8DNQPlEB8sNeX4uED8iK\n" +
65 "3wBoiI68b1KCIvHBnz1vIgEsmF5CWPsZQuKUH3Wmx+SlFodXEieqBGneoh5H0E9E\n" +
66 "Wm7E/EXRhqj5/8YQG2RdNMFPgcULSJkjS4qiudGo5xem82bjuzaX2Efp+TiHAqK8\n" +
67 "+xUQyiZBquEb13BS1xdBLMYXQV8uPyvIsuOSyixZGdbyz5D69KSZE9Chi0NeFYUH\n" +
68 "DfYTMSjJIRil+gaNQ0K3s97meaI6ovFMYS9a4uHgp1/y2Mn3qYkokvH88zFW4lY5\n" +
69 "DvvH6fmkdw7+yVLavyx6N+G5qluibDYuIl1ezIkbAj9DWDxzvrt3QVznNkPDW08E\n" +
70 "tH9r2SJL+wsuNB4nDI3dy7KGjnm0rV1m7b+GusrriJSOklRa5DEmOA==\n" +
71 "-----END RSA PRIVATE KEY-----";
72 byte[] keyBytes = llaveCadena.getBytes();
73
74
75 PKCS8Key pkcs8 = new PKCS8Key(keyBytes, pass.toCharArray());
76 PrivateKey llavePrivada = pkcs8.getPrivateKey();
77 byte[] cadena = cadenaLlave.getBytes();
78
79 Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.DECRYPT_MODE, llavePrivada);
80 //byte[] bkey = cipher.doFinal(Base64.decode(cadena));
81 byte[] bkey = cipher.doFinal(Base64.decodeBase64(cadena));
82 SecretKey llaveDescifrada = new SecretKeySpec(bkey , 0, bkey .length, "AES");
83
84
85 byte[] bJsonCifrado = cadenaResponse.getBytes("UTF-8");
86 Cipher cipher2 = Cipher.getInstance("AES/ECB/PKCS5Padding");
87 cipher2.init(Cipher.DECRYPT_MODE, llaveDescifrada);
88 byte[] ciph = cipher2.doFinal(Base64.decodeBase64(bJsonCifrado));
89 String jsonDescrifrado = new String(ciph);
90
91 System.out.println(jsonDescrifrado);
92 System.exit(0);
93 } catch (GeneralSecurityException ex) {
94 Logger.getLogger(BluTesting.class.getName()).log(Level.SEVERE, null, ex);
95 } catch (UnsupportedEncodingException ex) {
96 Logger.getLogger(BluTesting.class.getName()).log(Level.SEVERE, null, ex);
97 }
98
99
100 }
101
102}
103