· 9 years ago · Jan 31, 2017, 01:52 PM
1import java.awt.event.*;
2import java.awt.*;
3import javax.swing.*;
4import java.security.*;
5import javax.crypto.*;
6import javax.crypto.spec.*;
7import java.io.*;
8
9public class Main extends JPanel {
10
11 public static void main(String[] args) {
12 JFrame frame = new JFrame("MotionObf • String-Obfuscator");
13 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
14 frame.setPreferredSize(new Dimension(500,250));
15
16 frame.setLocationRelativeTo(null);
17 frame.setResizable(false);
18
19 Main p = new Main();
20
21 frame.getContentPane().add(p);
22 frame.pack();
23 frame.setVisible(true);
24 }
25
26 private JTextField in;
27 private JTextArea out;
28
29 public Main() {
30 JLabel info = new JLabel("String :");
31 in = new JTextField(20);
32 JButton encrypt = new JButton("Obfuscate");
33 out = new JTextArea(10,40);
34
35 out.setEditable(false);
36
37 encrypt.addActionListener(new encryptListener());
38 in.addActionListener(new encryptListener());
39
40 add(info);
41 add(in);
42 add(encrypt);
43 add(out);
44 add(new JScrollPane(out));
45 }
46
47 private class encryptListener implements ActionListener {
48 public void actionPerformed(ActionEvent e) {
49 String data = in.getText();
50
51 if (data.length() == 0) { }
52 else
53 try {
54 String en = encrypt(data);
55 out.append("Unobf • String: " + decrypt(en) + "\n");
56 out.append("Obf • String: " + en + "\n");
57 } catch(Exception ex) { }
58 }
59 }
60
61 public String asHex(byte[] buf) {
62 StringBuffer strbuf = new StringBuffer(buf.length * 2);
63 int i;
64 for (i = 0; i < buf.length; i++) {
65 if (((int) buf[i] & 0xff) < 0x10)
66 strbuf.append("0");
67 strbuf.append(Long.toString((int) buf[i] & 0xff, 16));
68 }
69 return strbuf.toString();
70 }
71
72 private SecretKeySpec skeySpec;
73 private Cipher cipher;
74 private byte[] encrypted;
75
76 public String encrypt(String str) throws Exception {
77 // Get the KeyGenerator
78 KeyGenerator kgen = KeyGenerator.getInstance("AES");
79 kgen.init(128); // 192 and 256 bits may not be available
80
81 // Generate the secret key specs.
82 SecretKey skey = kgen.generateKey();
83 byte[] raw = skey.getEncoded();
84 skeySpec = new SecretKeySpec(raw, "AES");
85
86 // Instantiate the cipher
87 cipher = Cipher.getInstance("AES");
88
89 cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
90
91 encrypted = cipher.doFinal(str.getBytes());
92 return asHex(encrypted);
93 }
94
95 public String decrypt(String str) throws Exception {
96 cipher.init(Cipher.DECRYPT_MODE, skeySpec);
97 byte[] original = cipher.doFinal(encrypted);
98 String originalString = new String(original);
99 return originalString;
100 }
101
102}