Advertisement
cperryoh

tool

Mar 12th, 2021
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 33.66 KB | None | 0 0
  1.  
  2. import java.awt.EventQueue;
  3. import java.awt.Toolkit;
  4. import java.awt.datatransfer.Clipboard;
  5. import java.awt.datatransfer.StringSelection;
  6. import javax.swing.JFrame;
  7. import javax.swing.JRadioButton;
  8. import java.awt.event.ActionListener;
  9. import java.util.Random;
  10. import java.awt.event.ActionEvent;
  11. import javax.swing.JTextArea;
  12. import javax.swing.border.BevelBorder;
  13. import java.awt.event.KeyAdapter;
  14. import java.awt.event.KeyEvent;
  15. import javax.swing.JScrollPane;
  16. import javax.swing.JToolBar;
  17. import javax.swing.JMenu;
  18. import javax.swing.JPopupMenu;
  19. import javax.swing.JMenuItem;
  20. import java.awt.event.MouseAdapter;
  21. import java.awt.event.MouseEvent;
  22. import javax.swing.JMenuBar;
  23. import java.awt.Component;
  24. import javax.swing.Box;
  25.  
  26. public class tool {
  27.     // please note that spaces are ignored in the encryption process an spaces that
  28.     // are present are there in the final message
  29.     private JFrame frame;
  30.     JTextArea Out = new JTextArea();
  31.     JRadioButton deEncrypt = new JRadioButton("Decrypt");
  32.     boolean consumed;
  33.     int level = 50;
  34.     String[] keys = { "f.z", "/?:", "bt8", "3nc", "yud", "l&.", "o9p", "up&", "yb0", "dyt", "&s7", "xg4", "16y", "ndo",
  35.             "!g8", "6re", "zpz", "szq", "q1t", "s0s", "?32", "7dq", "8x8", "2sx", "hz4", "9.7", "k7w", "cjg", "a:7",
  36.             "6&?", "bn6", "&0/", "av%", "ja5", "z/!", "z65", "rr,", "qb:", "cc7", "lhb", "4z2", "lbq", "df&", "c3j",
  37.             "zmr", "=in", "q0b", "0?8", "vq4", "s3%", "uw:", "lme", "ofv", "83h", "xjq", "z1&", "!=2", "!ox", "465",
  38.             "efg", "iz!", "0d6", "i3v", "?uh", "o.x", "eo9", "qc6", "qkw", "?gy", "u%w", "a!a", "k?8", "eeg", "ou0",
  39.             "7dw", "/fl", "2yy", "g?z", ",18", "y10", "/sj", "20,", "gcg", "55/", "p9=", "8vs", "al.", "0/n", "u%&",
  40.             "pxi", "52j", ",bg", "1l7", "fow", "igm", "8.7", "iw7", "r&v", "emp", "nhy" };
  41.     char[][] mixedUps = {
  42.             { '=', 'j', 'h', 'q', 'x', '1', 'm', 'o', '0', '3', 'v', '&', 'n', 'd', 'z', 's', '?', '5', ',', '9', '.',
  43.                     'b', 'a', 't', '/', '!', 'l', 'g', '%', '6', 'c', 'e', 'w', 'u', ':', '7', '8', '2', 'p', 'y', 'i',
  44.                     'r', 'k', '4', 'f' },
  45.             { 'p', '1', '3', '!', ':', ',', 'j', '?', 'c', '0', 't', 'g', '&', '5', 'y', 'v', '6', 'q', '2', 'k', '%',
  46.                     'r', 'm', 'o', '8', 'a', '4', 'x', '/', 'z', 'd', 'f', 'h', '9', 's', 'i', 'n', '.', 'w', 'e', 'b',
  47.                     'l', '7', 'u', '=' },
  48.             { '%', '9', ':', 'o', '2', 'g', '0', '6', 'c', 'x', 'l', 'e', '1', 'n', ',', 'h', 'v', 'r', '&', 'w', '7',
  49.                     'f', '/', '!', 'u', '=', 'z', '5', 'b', 'k', 's', '?', 'p', '.', 'a', '8', 'i', 't', '4', '3', 'j',
  50.                     'q', 'd', 'y', 'm' },
  51.             { 'n', '9', '?', 't', 'c', 'z', '4', 'a', 'y', 'i', '/', '2', 'h', '%', 'k', 'p', '.', 'l', 'g', ':', '0',
  52.                     'u', 'o', 'd', 'x', ',', 'b', '=', '5', '1', '8', '6', 'q', 'f', '3', 'v', '&', '!', 'm', 'r', 'w',
  53.                     'j', 'e', '7', 's' },
  54.             { '&', 'n', 'p', '=', 'b', '3', '4', 'f', 'm', '/', 'g', 't', 'q', 'l', '!', 'c', 'e', 'd', '9', '8', '?',
  55.                     'y', 'j', '.', '5', '1', 'r', ':', 'i', 'h', 'a', '6', 'v', '2', '7', '0', 'k', 'z', 'x', 'w', 's',
  56.                     'o', '%', 'u', ',' },
  57.             { '0', 't', 'h', 'y', 'm', 'r', '=', '&', 'l', 'o', 'n', 'a', '9', ':', 'k', 'i', '1', '/', '.', '?', '!',
  58.                     'p', 'b', '6', 'w', 'q', 'd', 'x', '3', 'u', '2', 'f', '7', 'c', 'g', '8', 'v', '5', ',', 'j', '4',
  59.                     '%', 's', 'e', 'z' },
  60.             { '&', 'a', '8', 'v', 'x', 'w', 'b', 'h', '/', 'n', 's', 'k', 'f', '0', 'l', '1', '6', 'j', '?', 'm', '4',
  61.                     '9', ':', '3', 'p', 'i', '.', '2', 'd', 'g', '%', 'z', ',', 'c', 'y', 'q', '7', 'e', 't', '=', '5',
  62.                     'o', 'r', 'u', '!' },
  63.             { 'l', 'c', 't', 'x', 'i', 'f', '3', ':', '.', '2', '7', '8', '9', '5', 'd', '/', '4', 'p', 'b', 'k', 'h',
  64.                     'j', 'z', '&', '%', ',', 'g', 'v', 's', 'q', 'e', 'a', '1', 'y', 'w', 'n', '6', 'u', 'o', '!', '?',
  65.                     'r', '=', 'm', '0' },
  66.             { '3', 'h', 'n', 'i', '/', 'q', '!', 'f', '0', '?', '9', ':', '&', '.', '4', '7', 'x', 'b', '6', 'l', 'c',
  67.                     'v', 'r', 'a', 'g', 'p', 'y', 'e', '%', '8', ',', 'u', 'z', '1', 'j', '2', '=', 'd', 'k', 't', 's',
  68.                     '5', 'm', 'o', 'w' },
  69.             { 'u', '.', 'q', '3', '1', '!', '2', 'l', 'g', 'm', 'e', '7', '8', 'f', '?', ':', 'k', '&', '0', 'v', 'z',
  70.                     't', 'a', 'r', 'i', '=', '%', '4', 'j', ',', '/', '6', 'y', 'c', 'h', 'b', 'n', '5', 'w', 'd', 'p',
  71.                     'o', 's', 'x', '9' },
  72.             { 'f', 'm', 'n', '8', 't', 'y', 'u', 'i', 'c', '5', 'a', '7', 'z', '9', '&', '?', '=', ',', 'r', '.', '2',
  73.                     'v', 'g', '%', '3', '1', '!', 'h', 'b', '0', 'o', 'x', 'w', 's', ':', 'p', 'l', '6', '/', 'q', 'd',
  74.                     'e', 'j', 'k', '4' },
  75.             { '6', 's', '7', 'p', 'x', 'h', 'b', ',', 'w', 'r', '!', 'a', '.', '8', '0', 'g', '?', 'q', '3', '&', '5',
  76.                     'y', '9', '%', '1', '/', 't', 'e', ':', 'l', 'n', 'k', '4', 'z', 'i', '2', 'o', '=', 'd', 'f', 'v',
  77.                     'j', 'm', 'u', 'c' },
  78.             { 'p', '4', 'i', 'a', ',', 'v', '/', '?', 'f', '2', 's', 'x', 'c', '1', '3', '&', '7', 'j', 'l', 'o', 'k',
  79.                     'h', ':', 'z', 'b', '9', 'n', 'w', 'r', 'u', 'y', '=', '0', 't', 'd', 'm', '!', '5', '8', '6', '.',
  80.                     '%', 'e', 'g', 'q' },
  81.             { ':', 'x', '5', 'j', '2', 'q', 'n', 'w', ',', '7', '3', '6', '4', 'l', '?', 'f', '=', '&', '9', 'k', 't',
  82.                     'o', 'p', 'y', 'z', 'i', '1', 'm', 'g', 'a', 'e', 's', '%', 'r', '.', '/', 'd', 'c', '!', 'v', 'u',
  83.                     'h', 'b', '8', '0' },
  84.             { 't', '?', '4', 's', 'k', 'i', 'w', '.', 'f', 'p', 'y', 'r', '2', 'x', 'h', '3', '6', 'c', '=', ':', 'j',
  85.                     '1', 'n', 'g', ',', 'o', 'm', '8', 'e', 'l', 'v', 'z', '9', '%', '/', 'd', 'q', 'u', '!', '5', '7',
  86.                     '0', 'b', 'a', '&' },
  87.             { 'r', '2', '=', '1', 't', 'b', '%', 'e', 'g', 'm', 'y', 'c', '/', 'h', 'w', 'd', 's', 'q', '8', 'i', '7',
  88.                     'p', '6', 'l', '?', 'a', 'j', 'f', 'v', '3', 'o', ',', ':', 'z', '5', 'n', 'k', '0', 'u', '!', '9',
  89.                     '&', '.', 'x', '4' },
  90.             { '3', 'k', 'n', '4', 'h', '9', '&', 'e', ':', '1', '%', 't', 'l', 'b', '!', 'o', 'i', 'f', 'q', '7', '?',
  91.                     '5', 'g', '0', '8', '6', '2', 'r', 'u', 'd', 'a', 'v', 'x', 'p', 'j', ',', 's', 'y', 'w', '=', 'c',
  92.                     'm', '.', 'z', '/' },
  93.             { 'd', 's', 'g', 'v', 'n', 'w', 'l', '&', '?', 'c', 'r', 'f', '9', '0', 'p', 'z', '7', 'j', '%', '3', '2',
  94.                     'e', ',', 'i', '/', 'k', 't', 'm', 'h', '1', 'o', '!', '8', 'u', 'q', ':', '=', 'b', 'a', '4', '.',
  95.                     'x', '5', 'y', '6' },
  96.             { 'q', 'f', 'b', '=', 'w', 'o', ',', 'g', '7', '5', 'z', '1', '!', 'n', '8', 'm', ':', 'r', '4', 'a', '0',
  97.                     'h', '2', 's', '3', '9', '6', '.', 'y', 'v', 'c', '/', '?', 'i', 't', 'u', 'e', 'p', '%', 'l', 'k',
  98.                     'd', '&', 'x', 'j' },
  99.             { '?', 'x', 'q', 'p', '6', '0', '!', 'n', 'e', 'u', 'r', 'f', 'i', 'c', '2', 'd', ',', '1', '3', 'k', 's',
  100.                     '.', 'z', '9', 'w', '8', 'y', 'v', ':', '&', '=', 't', '5', 'l', '7', 'j', '%', 'g', '4', 'h', 'b',
  101.                     'm', 'o', 'a', '/' },
  102.             { '=', 'a', ',', 'n', 'f', '2', 'i', 'd', 'c', 'z', '6', 't', '7', 'g', 'o', 'x', '0', '%', 'j', 'w', 'b',
  103.                     ':', 'v', '5', 'h', 'u', '/', '!', '3', '?', 'k', 'e', '8', 'y', 'r', 'm', 'l', 'p', '.', 's', 'q',
  104.                     '&', '1', '9', '4' },
  105.             { '.', '6', 'k', '0', 't', '!', '/', 'w', 'm', 'p', 'y', 'g', 'b', '=', ':', 'j', 'v', '3', 'a', 'l', '5',
  106.                     'x', ',', '8', 'd', 'n', '&', 's', '1', '4', '?', 'c', 'o', 'q', 'h', 'r', 'e', 'u', '9', '%', 'z',
  107.                     '7', 'i', '2', 'f' },
  108.             { 'r', '?', 'v', '&', 'b', 'o', 'c', '=', '!', '4', '5', 'u', 's', 'l', 't', '6', 'p', '8', ':', '/', 'd',
  109.                     '3', 'z', 'q', '%', 'j', '.', 'i', 'n', 'f', 'g', '1', 'y', 'a', 'x', ',', 'e', '9', 'h', '7', '2',
  110.                     'm', 'w', 'k', '0' },
  111.             { 'o', '.', '/', 'p', 'z', 's', 'l', 'j', 'q', 'r', 'v', '5', 'm', '9', '1', 'a', 'f', '3', 'c', 't', 'h',
  112.                     'w', 'k', '&', '0', 'b', '6', 'u', '?', 'i', ':', 'n', 'y', '4', 'g', '2', 'd', 'x', '7', '!', '=',
  113.                     '8', '%', 'e', ',' },
  114.             { 'q', ',', '4', 's', 'h', '2', '7', 'i', 'l', '8', 'e', '?', 'c', 'x', '!', '3', 'y', '6', 'd', '&', 't',
  115.                     'm', 'j', 'n', 'k', '9', 'r', 'g', '5', 'w', 'v', '/', '=', '.', '%', 'b', ':', 'o', 'f', 'p', 'a',
  116.                     'u', '0', '1', 'z' },
  117.             { 'c', ',', 's', 'f', '1', 'm', 'l', ':', 'r', '8', 't', '9', '3', '=', 'e', '4', 'd', 'z', '!', '0', 'n',
  118.                     'y', '&', 'u', '2', 'a', '/', 'w', 'x', 'q', 'h', 'o', 'g', 'v', '7', 'i', 'k', '?', 'p', '%', '6',
  119.                     '.', 'j', 'b', '5' },
  120.             { '=', 'm', '!', 'f', ',', '9', 'n', ':', 't', '1', 'x', '&', 'e', '4', 'h', 'o', '/', 'q', 'c', '8', 'y',
  121.                     'l', 'v', 'r', '2', 'a', '7', '?', '6', '5', 'd', '0', 'p', 'j', 'z', 'i', 'b', '3', '.', 's', 'u',
  122.                     'g', '%', 'k', 'w' },
  123.             { 'k', 'e', '6', 's', '&', 'o', 'a', '1', 'v', '%', '9', 'y', 'z', '8', 'x', 'i', ',', 'q', 'u', '7', '0',
  124.                     'c', 'f', 'm', 'p', 'j', 'r', 'h', '5', 't', '/', '?', 'd', 'b', 'w', '4', 'g', '.', '3', '!', '=',
  125.                     'n', 'l', ':', '2' },
  126.             { '.', '3', 'v', '%', 'w', 'p', 'd', 'n', '&', 'z', 'g', 'e', 'q', 'f', '4', 'l', 'i', '7', 's', 't', 'x',
  127.                     '8', 'm', ':', 'r', 'j', '0', 'o', '?', ',', 'b', '=', 'k', 'c', 'u', '9', '6', '1', '5', 'a', '2',
  128.                     'y', '/', '!', 'h' },
  129.             { '%', '?', 'i', 'x', 'l', 'b', 'y', 'g', 'a', 'p', 's', '5', '=', 'r', 'o', '1', '2', ':', 'd', 'c', 'n',
  130.                     'z', 'q', 'm', 'w', 'e', 'v', '7', '0', 'j', '9', '6', '8', '&', 'f', 'k', '.', '3', '/', 'h', '!',
  131.                     '4', 'u', 't', ',' },
  132.             { '&', 'b', 'x', '=', 'h', 'f', '5', '7', ',', 'u', 'o', 's', 'd', 'i', 'z', '6', 'w', '/', '8', '2', 'q',
  133.                     'l', 'k', 't', 'e', 'v', '!', 'n', 'y', '.', '9', 'p', 'c', 'j', '1', '?', '4', 'a', 'm', '0', 'r',
  134.                     ':', 'g', '%', '3' },
  135.             { 'j', '9', 't', 'm', '=', 'l', '8', 'u', '!', 'f', 'c', '%', 'z', 'p', 's', 'x', 'h', '0', 'n', 'y', 'd',
  136.                     'q', '6', '5', 'o', '?', 'b', 'r', 'v', '1', '3', 'e', 'g', 'a', ':', ',', 'i', 'k', '/', '7', '2',
  137.                     'w', '.', '4', '&' },
  138.             { 'l', 'n', 'w', '!', '8', '6', '5', 'e', 'v', 'p', '=', 'g', '/', '0', ':', 'o', 'm', '?', 't', 'q', 'd',
  139.                     'c', 'j', '.', 'y', 'b', 'k', 'h', 'u', '%', '1', '7', 's', 'f', '2', '9', '4', 'z', ',', '3', 'x',
  140.                     'a', '&', 'r', 'i' },
  141.             { 'n', 'u', ':', 's', '=', 'a', '7', '/', 'h', '5', '6', '1', 'i', '3', 'v', 'y', 'q', 'p', ',', 'j', 'e',
  142.                     '.', 'w', 'c', 'x', '2', '%', 'd', 'f', '?', 'z', 'g', 'k', 'b', '8', '&', 'l', '0', '9', 'r', '!',
  143.                     'm', 't', 'o', '4' },
  144.             { '2', '=', 'h', '5', 'e', '4', 'o', 'i', '0', 'y', '!', 'b', 'c', '8', 'x', 'w', '%', '7', 'j', ':', '.',
  145.                     '?', '/', 'z', 'v', 'a', '1', 't', '6', 'n', 'f', 'm', 'g', '9', 's', 'k', ',', '3', 'l', 'p', 'q',
  146.                     'r', 'u', 'd', '&' },
  147.             { 'a', '!', 'k', '&', 'j', 'o', 'c', 'e', 'w', '/', '2', 'b', 't', 'p', 'f', '8', '.', '4', 'y', 'x', '7',
  148.                     'v', 's', 'l', ':', '?', '=', '0', 'm', '3', '%', 'h', 'z', 'u', '1', 'd', 'i', 'r', 'q', ',', '6',
  149.                     'g', '5', '9', 'n' },
  150.             { '.', '7', '9', 'l', '3', 'a', 'p', 'v', 'm', 's', 't', 'z', 'u', '6', '/', '!', '1', '2', '4', 'h', '%',
  151.                     'c', 'i', '&', ',', '5', 'x', 'f', 'n', 'g', 'd', 'o', 'j', '8', 'r', '=', ':', '0', 'q', 'y', '?',
  152.                     'w', 'k', 'b', 'e' },
  153.             { '3', '9', 'h', '&', 'z', 'e', '2', 'a', 'u', '8', 'l', 'p', '1', ':', '5', '%', 'b', 's', '/', '0', 'n',
  154.                     'w', 'j', '.', '4', 'o', 'v', ',', 'x', 'f', '?', 'i', 't', '6', 'q', 'r', 'y', 'm', 'd', '7', 'c',
  155.                     '=', '!', 'k', 'g' },
  156.             { 'e', ':', 'i', 'f', 'u', '/', 'j', '1', '=', 'r', '4', 'k', '5', 'g', 'o', 'y', 'a', 'm', 'n', 'w', 'z',
  157.                     ',', '3', '?', '9', 't', '%', 'q', 'x', '7', 'v', '&', 'p', 'h', '2', '8', 'd', 'l', 's', 'b', '6',
  158.                     '0', 'c', '.', '!' },
  159.             { 's', '2', 'w', 'i', 'm', ',', 'b', 'd', '4', '8', 'g', '7', '6', 'k', 'q', '3', 'j', 'a', 'f', ':', '%',
  160.                     'o', 'p', 'x', '.', '=', 'y', 't', '?', 'r', '0', 'c', '1', 'h', '9', 'e', 'z', 'v', '/', 'l', 'n',
  161.                     '&', '5', '!', 'u' },
  162.             { '%', 's', 'b', ',', '?', '!', 'g', '.', 'k', 'x', 'o', 'i', 'q', '0', ':', '3', 'y', 'r', '=', 'e', '9',
  163.                     'w', 'a', 'c', 't', 'f', '1', '7', 'd', 'u', 'z', '/', 'h', 'm', 'n', '6', '8', 'v', 'l', '4', '5',
  164.                     'j', '2', 'p', '&' },
  165.             { 'n', 'x', '4', 'm', 'p', 'y', 'b', 'w', '2', '/', 'a', 't', '3', 'o', 'r', '5', 'v', '!', '8', '6', '=',
  166.                     '1', 'u', '7', ',', 'c', 'd', '9', 'l', ':', 's', 'h', '&', 'i', 'g', 'k', 'q', 'e', 'z', '0', 'f',
  167.                     'j', '%', '?', '.' },
  168.             { 'a', 't', '1', ':', '/', 'c', 'q', 'n', 'z', 'p', 's', 'x', '&', '.', 'm', '2', 'k', 'b', 'g', ',', 'o',
  169.                     'u', '6', 'y', '4', 'l', 'r', 'd', 'j', 'f', '%', 'i', 'w', '5', '=', '8', '!', '9', '?', 'h', 'v',
  170.                     'e', '0', '3', '7' },
  171.             { '5', 'p', '%', 's', '8', 'y', 'r', 'a', '3', ':', '=', 'd', 'h', 't', '!', 'b', 'j', 'g', '2', 'u', 'v',
  172.                     'k', '1', 'w', 'o', 'f', 'm', '&', ',', 'x', '/', 'i', 'c', '7', 'n', '9', '?', '4', 'e', 'q', 'l',
  173.                     '0', 'z', '.', '6' },
  174.             { 'd', '9', '1', '3', 't', 'g', ':', 'x', 'k', 'l', '8', ',', 'h', 'm', '4', '%', '2', 'w', 'e', '!', 'f',
  175.                     'a', 'c', 'v', 'o', '.', 's', '&', 'y', '5', '7', 'i', 'n', '0', 'u', 'q', 'z', 'r', '=', 'j', 'b',
  176.                     '/', '6', '?', 'p' },
  177.             { 'h', 'j', '?', '&', 'x', 'f', '!', 'n', '8', 'y', '%', 'u', 'k', 'm', ':', '4', 'e', '/', 'c', '3', 'o',
  178.                     '2', 't', '1', 'p', '5', 'q', 'v', 's', ',', '0', '.', 'g', 'b', '=', '7', 'a', '9', 'z', 'w', 'l',
  179.                     'd', '6', 'r', 'i' },
  180.             { '1', '6', 'f', 'x', '%', '=', 'g', 'k', 'j', 'w', 'd', '4', '.', ':', '/', 't', 'o', '2', 'm', 'r', '&',
  181.                     'e', 'p', 'i', 'b', '8', '0', 'c', 'q', '9', 'y', '7', 'n', 'a', 'u', 'v', 'z', '5', '?', 'l', '3',
  182.                     ',', '!', 'h', 's' },
  183.             { '1', 'h', 'g', 'f', 'z', '=', '%', 'b', 's', 'v', '.', '!', 'i', ':', 'k', 'm', '2', '&', 'c', 'u', '5',
  184.                     '7', '9', 't', 'r', 'w', 'y', '0', ',', '?', 'l', 'd', 'n', 'x', '3', 'q', '/', 'p', 'a', '4', 'e',
  185.                     'o', 'j', '6', '8' },
  186.             { 'w', 'z', '2', 'f', ':', 'g', '8', 'v', ',', 'x', 'n', '0', '6', '!', 'e', 'j', '9', 'd', 'u', 'm', 'i',
  187.                     'l', 'c', '1', '?', 'k', '7', 'y', '/', 'b', 'o', '&', '3', 'q', '%', '=', 'h', 'r', 'a', '4', 's',
  188.                     'p', 't', '.', '5' },
  189.             { 'z', 's', '/', 'y', '2', 'f', 'o', '!', 'p', 'c', '4', 'a', 'w', '5', '.', 'm', 'e', 'k', '&', 'r', '8',
  190.                     '=', '1', ',', 'h', 'g', 'j', 'b', '?', 'q', '3', 'u', 'd', 'x', ':', 'n', '6', 'v', '7', 'l', '9',
  191.                     '0', 't', 'i', '%' },
  192.             { '4', 'l', 'q', 'f', 'c', 'k', '0', 'y', 'j', '/', 'b', 'n', 'e', '5', 'p', 'r', 'i', 'o', 'h', 'x', 'm',
  193.                     'a', '6', ':', 's', '%', 'u', 'v', '7', '.', '2', '&', '3', 'd', '!', '=', 'w', 'g', ',', '1', 'z',
  194.                     '8', '?', 't', '9' },
  195.             { 'n', 'j', '0', '4', '3', 'f', '7', '9', 'x', '6', 'h', 'o', 'g', 'u', '/', 'v', '?', '=', '8', 'm', '1',
  196.                     's', 'i', 'd', 'r', 'l', 'w', '%', 'q', '!', 'k', ':', '2', 'b', '.', 'a', 't', ',', 'c', '5', 'e',
  197.                     'p', 'z', '&', 'y' },
  198.             { '.', 'l', 'u', '9', '%', '/', '6', '3', 'f', 'r', 'o', '8', 't', 'j', 'x', 's', '&', '1', '!', '7', 'e',
  199.                     '0', 'h', 'c', 'd', '4', '5', 'k', 'a', '=', 'i', '2', ':', 'w', 'n', 'g', 'm', 'p', 'b', 'z', 'q',
  200.                     'y', ',', 'v', '?' },
  201.             { 'a', '9', 'k', '0', 'c', 'h', '.', 'x', 'j', '4', 's', 'b', 'y', '%', 'l', '7', 'r', 'e', '3', 't', '5',
  202.                     'n', '2', 'v', '/', 'i', '?', ':', 'g', 'z', 'd', '!', '1', '8', 'f', 'q', '6', ',', '=', 'o', 'm',
  203.                     'w', 'p', '&', 'u' },
  204.             { '2', '0', ':', '1', '!', 'b', 'e', '/', 'x', '6', 's', '7', 'l', 'v', '&', 'r', 'k', '5', 't', '=', '?',
  205.                     '.', 'i', 'h', 'a', ',', 'g', 'p', 'o', 'j', 'q', 'm', 'u', '8', 'y', 'c', '9', 'z', 'd', 'n', 'w',
  206.                     '3', '4', 'f', '%' },
  207.             { 'n', 't', 'a', 'c', 'f', 'l', 'r', '1', '6', 'u', '0', 'x', '=', ',', '8', '!', 'k', 'w', 's', 'm', 'g',
  208.                     '3', '4', '&', '5', 'b', 'p', '.', '/', 'z', '2', '7', 'v', 'h', 'e', 'i', 'o', 'd', '%', ':', '?',
  209.                     'j', 'y', '9', 'q' },
  210.             { '7', 's', 'r', '8', '0', '2', 'f', 'c', 'm', 'e', ':', '4', 'j', ',', 'd', 'y', '!', 'z', 'v', 't', 'x',
  211.                     'p', 'w', '3', '%', '&', '1', '=', '5', 'a', 'l', '/', '.', '?', 'i', 'q', 'g', 'u', 'n', '6', 'o',
  212.                     '9', 'k', 'b', 'h' },
  213.             { 'q', '8', 'g', 'w', 'm', 'c', 'e', 't', 'p', 'f', 'y', '%', ':', 'b', '&', 'd', '6', '5', 'j', '0', '1',
  214.                     'o', 'r', ',', 'k', '=', '7', '.', 'u', '4', '2', 'h', '!', '3', 'v', '/', '?', 'a', 's', 'z', 'i',
  215.                     'x', '9', 'n', 'l' },
  216.             { '&', 'h', 'f', 'm', '6', '3', 'j', '?', 'n', ':', 'b', '0', 'c', 'u', 'w', ',', 's', 't', 'q', 'i', '9',
  217.                     'g', '%', 'a', '8', 'z', 'd', '.', 'v', '4', '1', 'l', '!', 'y', 'e', '5', '=', 'x', 'o', '/', '2',
  218.                     'r', 'k', '7', 'p' },
  219.             { '2', 'b', 'r', 'm', '&', '5', 'u', '%', 't', 'k', 'f', '1', 'w', 'l', '8', ',', '/', '9', 'j', '.', 'y',
  220.                     '4', 'n', 's', 'v', 'i', '6', 'c', '!', '0', '=', 'h', '7', 'p', '3', 'e', 'x', 'a', 'o', 'z', 'g',
  221.                     'q', ':', 'd', '?' },
  222.             { ',', 'j', 'y', 'w', '%', 'a', 'i', '0', '7', '9', '8', '=', 'b', 'x', 'l', 't', 'c', 'v', 'e', '/', 'f',
  223.                     'u', 'g', '3', 'p', 'q', 'm', 'h', '!', 'r', '1', '2', '5', 'o', 'z', 'k', 'd', '?', ':', 's', 'n',
  224.                     '&', '4', '6', '.' },
  225.             { '4', 'e', '1', '?', 'h', 't', 'q', 'y', '2', '9', '!', '%', 'f', 'r', 's', 'j', 'd', 'k', 'u', '6', 'm',
  226.                     'p', 'a', '8', 'x', '5', 'z', 'b', '=', '.', '/', ':', 'l', '&', 'n', 'o', 'v', '0', 'c', '7', ',',
  227.                     'g', 'w', 'i', '3' },
  228.             { ':', '1', 'e', 'd', '4', 'y', 'b', 'o', '&', 'r', '?', 'u', '=', 'n', '5', '0', '9', 'p', 'v', '/', '.',
  229.                     't', 'x', 'i', 'c', '8', '3', 'w', 'a', 'g', '2', 'z', '6', 'q', 'm', '7', 'h', 'k', 's', ',', 'l',
  230.                     '%', '!', 'j', 'f' },
  231.             { 'u', '/', 'r', 'n', '.', 'q', ':', 'b', '1', '%', 'h', '8', 'z', 't', '9', 'f', 'p', 'j', '2', '?', 'v',
  232.                     'w', '7', 'c', ',', 'g', 'm', 'd', '6', 'a', 's', '5', '0', 'o', 'e', '!', '&', 'k', 'y', '4', '3',
  233.                     'l', 'x', 'i', '=' },
  234.             { 'h', 'f', '.', 'g', '9', '%', '!', 'v', 't', 'w', '8', '6', '/', 'b', 'm', 'z', 's', '2', '?', 'y', 'r',
  235.                     'o', 'k', 'a', 'l', 'd', '1', '0', '4', '3', 'q', 'p', 'e', ':', 'x', 'c', 'u', '7', 'j', '5', 'n',
  236.                     ',', '&', 'i', '=' },
  237.             { '&', '!', 'w', 'u', 'c', 'k', '0', '3', '6', '8', 'o', 'd', 'b', 'x', '?', ':', 'r', '7', 'y', 'g', '5',
  238.                     'p', '/', 'l', '1', 'a', 'z', 't', 'j', 'e', '2', 'h', 'q', 'v', '=', '9', 'f', '%', '.', 'i', ',',
  239.                     's', 'm', '4', 'n' },
  240.             { 'e', 'q', '=', 'r', '5', 'x', 'f', ':', 'p', 'b', 'l', 'v', '1', '!', 't', 'g', 'n', '%', 'o', 'c', '4',
  241.                     '/', 'd', 'i', '9', '3', 'm', '0', '&', 'a', 'j', 'k', 'w', 'h', 'u', 'y', ',', '6', '2', 'z', '8',
  242.                     '7', 's', '.', '?' },
  243.             { '=', 'g', 'z', 'q', ':', '%', '&', '?', 's', 'd', 't', 'a', 'j', 'b', 'w', '1', '4', '9', 'e', '5', 'n',
  244.                     '6', 'h', 'f', 'm', '.', 'k', 'c', 'y', 'u', '8', '2', ',', 'x', '0', '!', 'l', '3', 'i', '7', 'v',
  245.                     '/', 'o', 'p', 'r' },
  246.             { 'a', 'l', 'e', '2', 'k', 'p', '/', 'n', 'i', 'g', '&', '0', '!', 'o', '1', '.', '8', 't', '7', 'c', '5',
  247.                     '?', 'r', 'd', 's', 'w', 'h', 'q', '3', 'f', '4', 'z', ',', '=', 'v', '6', 'j', 'b', 'y', 'u', '%',
  248.                     'x', '9', ':', 'm' },
  249.             { ':', '/', '6', 'k', '&', '%', 'f', 'c', '5', 'v', '1', '7', '?', 'j', 'h', 'p', ',', '4', 's', 'u', 'r',
  250.                     '0', 'm', 'b', 'x', '!', 'g', 'a', 'i', 'o', 't', 'z', 'd', '9', '2', '.', 'y', '=', '3', 'w', 'l',
  251.                     '8', 'n', 'e', 'q' },
  252.             { 'i', 'x', 'b', 'd', 'j', ',', '0', 'y', 't', 'e', '6', '%', '8', '3', '.', 'f', 'l', 'h', 'q', '7', 'w',
  253.                     'g', 'k', 'a', '?', '=', '9', '2', 'm', '&', '4', '/', 'n', 'v', 'u', 'p', ':', 'o', '5', 'c', '!',
  254.                     'r', '1', 's', 'z' },
  255.             { 's', '1', ':', 'r', 'l', 'b', 'u', 'q', 'y', 'j', 'h', 'k', 'i', 'w', 'v', 'm', '7', 'n', 'z', 'x', '0',
  256.                     '4', '!', 'o', '.', '2', 'a', 'c', '%', 'p', '&', ',', '6', '=', '8', 'g', '5', 'f', '9', '/', '?',
  257.                     'd', 'e', 't', '3' },
  258.             { '=', 'r', 'l', 'u', '.', 't', '6', '3', ':', '%', '/', '5', 'n', 'z', 's', '8', 'g', 'c', 'f', '9', 'b',
  259.                     'a', 'y', '4', '2', 'd', 'i', '?', '7', '!', 'x', 'p', 'o', 'h', '0', 'm', 'e', 'q', 'v', 'k', ',',
  260.                     '&', '1', 'j', 'w' },
  261.             { '%', 'l', 'u', 'g', 'z', '/', '8', 'j', '6', 'v', '&', 'r', 'c', '?', '9', 'm', 'e', 'b', '1', 'x', 'p',
  262.                     'k', '=', 't', '3', 'f', 's', '7', '5', 'n', 'o', 'q', 'y', ',', '!', '2', 'a', '0', 'd', '.', 'w',
  263.                     'h', 'i', ':', '4' },
  264.             { 'x', 'v', 'j', 'n', '=', '9', 'w', '&', '4', 't', 'l', 'e', '0', '2', '1', 'g', 'p', 'q', 's', '?', '8',
  265.                     'h', ',', '!', '5', '7', 'i', '/', 'y', ':', 'm', 'u', 'a', 'b', 'd', '.', 'o', '6', 'k', 'f', 'r',
  266.                     'c', 'z', '%', '3' },
  267.             { 'v', '?', '=', 'w', '4', 's', 'z', '3', '5', 'r', '1', 't', ':', ',', 'k', 'e', '&', 'a', '7', 'h', 'd',
  268.                     '0', 'l', '/', 'q', '!', 'c', 'g', '%', '8', 'n', '.', 'b', '6', 'x', 'm', '9', 'f', 'y', 'i', 'p',
  269.                     '2', 'u', 'j', 'o' },
  270.             { 'w', 't', ':', 'e', 'u', 'n', 'v', '&', 'h', 'r', '2', 'm', 'o', 'j', '6', '!', '5', '1', 'p', 'd', '4',
  271.                     'b', 'i', 'k', '9', 'c', 'x', '8', '%', 'q', 'y', '?', '=', '.', 'g', '0', 's', 'l', 'f', '/', '7',
  272.                     'a', ',', '3', 'z' },
  273.             { 'x', 'w', 'i', 'b', 'n', 'h', 'd', 'q', '/', '8', 'g', 'r', 'm', ',', 'j', 'a', 'y', '5', 'c', '?', 'u',
  274.                     'p', '4', 's', 'k', 'e', '1', 't', 'f', '7', '&', 'z', '2', '!', '3', '6', '9', '.', ':', 'v', '0',
  275.                     '=', '%', 'o', 'l' },
  276.             { '1', '=', '2', 'z', 'i', ',', 'c', 'w', 'k', 's', '0', 'q', 'u', '!', 'y', 't', 'm', 'v', 'e', 'j', 'h',
  277.                     'b', '&', '4', 'p', 'n', 'g', '3', 'f', '.', ':', '5', 'x', 'l', '9', '8', '%', 'o', 'd', '7', '6',
  278.                     '/', 'r', '?', 'a' },
  279.             { '=', 'w', '6', 'j', 'x', '1', 's', '9', '?', 'n', '0', 'k', 'v', '5', '!', '8', '/', 'p', '7', '4', '2',
  280.                     '&', 'h', 'y', 't', 'm', 'd', ':', 'z', 'l', 'i', '3', '.', 'e', 'b', 'c', 'a', '%', 'o', 'q', 'g',
  281.                     'r', ',', 'f', 'u' },
  282.             { 'g', 'x', '!', '?', '8', '=', ',', 'd', 'b', '9', '%', '&', '5', 'u', 'r', 'i', 'y', 'o', 'j', '.', 'e',
  283.                     'w', '7', 'a', '6', 'p', 'm', '3', 'z', 'q', '0', 's', 'c', 'l', 'f', 'k', '4', '2', '1', 'v', ':',
  284.                     't', 'h', '/', 'n' },
  285.             { 'e', 'k', '7', 's', 'm', 'p', '8', 'u', 'r', 'a', '/', ':', 'h', '2', '4', '3', 'w', ',', 'i', '5', '.',
  286.                     'f', 'o', 'x', 't', 'n', 'z', '6', 'j', 'v', 'c', '=', '!', '?', 'g', 'd', '9', '0', '&', 'b', 'l',
  287.                     'q', '%', '1', 'y' },
  288.             { '8', 'e', '?', 'r', '5', 's', '%', 'a', '1', 't', 'o', 'c', 'l', 'n', '0', '=', '.', 'v', '!', 'f', 'y',
  289.                     ',', 'p', '/', 'g', 'i', ':', 'j', 'h', '3', '2', 'z', 'k', 'x', 'm', '4', 'b', 'w', 'd', '6', '7',
  290.                     'u', 'q', '9', '&' },
  291.             { 'k', 'q', '9', 'j', 'd', 'y', 'l', '/', ':', 'a', 'p', ',', 'n', 'h', '!', '=', 'm', 'g', '5', 'i', 'c',
  292.                     '&', 'r', 'e', 'x', '2', 'u', '.', '0', 'o', '1', '6', '3', '%', 'v', '8', 'f', 't', 's', 'z', 'b',
  293.                     'w', '?', '7', '4' },
  294.             { 't', 'k', '5', '6', '=', '1', 'i', ',', 'h', 'g', 'a', 'u', 'r', 'b', '/', '9', 'q', '0', 'x', 'z', '%',
  295.                     '.', '?', 's', 'o', 'c', 'd', 'f', 'e', 'n', '2', 'w', 'm', '7', '3', 'p', '4', 'j', 'l', 'v', '&',
  296.                     ':', 'y', '!', '8' },
  297.             { 'b', '?', '%', 'n', 'y', 'p', 'x', 'r', '5', '9', ',', '0', 'k', 'g', '3', '!', 'h', '.', 'e', 's', 'a',
  298.                     '/', 'i', '6', 'c', '&', '2', 'l', '=', 't', 'j', 'u', 'v', 'o', 'm', 'z', 'q', 'f', '8', 'w', '4',
  299.                     'd', ':', '7', '1' },
  300.             { '4', '5', 'e', '%', 'f', 'a', 'v', 't', ',', 's', 'o', 'i', 'r', 'y', '&', '3', 'l', 'g', 'p', '1', 'b',
  301.                     '9', 'z', '?', '0', ':', 'k', 'd', 'c', '.', 'q', '8', 'j', '2', 'u', 'n', '6', '!', '/', 'm', 'w',
  302.                     '=', 'x', '7', 'h' },
  303.             { 'f', 's', ',', '.', 'd', 'm', '7', '%', 'x', 'k', 'i', '=', ':', 'l', 'v', '2', '1', 'u', '6', 'b', 'n',
  304.                     'w', 'j', '/', 'p', 'o', '?', 'a', '0', 'h', 'e', 'c', '&', 'g', 'z', '9', 'r', 'y', '4', 't', '!',
  305.                     '3', 'q', '5', '8' },
  306.             { 'k', 'd', '6', '5', 'r', 'm', '/', 'w', 'e', 'h', '&', 'v', 'l', '0', 'c', 'p', 'y', 'x', '%', '8', 'j',
  307.                     '2', 'f', 'u', 'i', '.', 'g', 't', '7', 'n', '9', '=', 'b', 'a', ':', 'q', 's', '3', 'o', '?', '1',
  308.                     '4', '!', ',', 'z' },
  309.             { 'h', '0', '&', 'z', '%', '8', 'u', '7', 'k', 'l', '2', 'd', '?', 'y', 'n', 'f', '!', 'q', 'p', 'b', '6',
  310.                     'g', 's', '3', 'w', ',', '4', '9', '.', 'i', '1', 'o', '/', 'x', 'j', ':', '=', 'a', 'c', 'm', '5',
  311.                     'r', 'e', 't', 'v' },
  312.             { 'f', 'n', 'z', '&', '?', 'd', '.', '1', 'k', 'q', '=', 'w', 'c', 'l', '2', ':', 'v', 'r', 'u', 'a', '4',
  313.                     's', '7', 'm', 'p', '6', 'j', 'y', '8', 'e', '3', 'i', '!', '/', 'x', 'o', '%', 'g', '5', '9', ',',
  314.                     'h', 'b', '0', 't' },
  315.             { 'q', '2', '/', ',', '1', '5', 'x', '?', 'p', 'j', 'o', '3', 's', 'w', 'l', 'e', 'u', '=', '7', '.', 'y',
  316.                     'v', '&', 't', 'c', 'f', '!', 'b', '%', 'm', 'i', 'r', '9', 'n', '8', '0', 'a', '6', 'h', 'd', ':',
  317.                     'k', 'z', 'g', '4' },
  318.             { 'f', 'r', 'p', 'j', 'n', '!', 'o', 'x', 'e', 'g', '7', '.', '2', 'v', '=', '0', 'a', '&', '5', '?', 'l',
  319.                     '8', 'i', '3', 'q', 'u', 't', '/', 'h', 'z', ',', 's', 'c', '4', '6', '1', 'b', '9', '%', ':', 'k',
  320.                     'y', 'd', 'm', 'w' },
  321.             { 'l', 'z', 'e', '=', '2', '/', '.', 'y', 'c', 'g', ',', '6', '0', '7', 'k', 'w', 'h', 's', '!', 'v', '8',
  322.                     'i', 'b', 'q', 'u', '1', 'm', 'n', 'f', '&', 'p', ':', '4', 'd', '9', 'a', '3', '5', 'r', '?', '%',
  323.                     'x', 'j', 'o', 't' },
  324.             { 'e', 'c', 'w', '2', '6', '=', 'r', 'd', '.', 's', 'j', '4', '1', 'n', 'f', '8', 'l', 'y', 'g', '/', 'm',
  325.                     '?', 'k', 'u', '5', 'a', '9', '3', ',', ':', 'h', 'v', 'i', 'q', '0', '%', '!', 'z', 't', 'b', 'p',
  326.                     '&', '7', 'x', 'o' },
  327.             { 'k', ',', 'h', 'j', '6', '4', ':', '0', '&', '5', '?', 'q', '=', 'g', 'w', '%', 'o', 'r', '8', 't', '/',
  328.                     'v', 'y', '7', 'z', '3', '1', 'l', 'n', 'a', 'm', 'd', 'c', 'x', '9', 'u', 's', 'p', 'e', '.', '!',
  329.                     '2', 'b', 'i', 'f' },
  330.             { 'o', '7', '2', 'l', 'q', ',', 'u', 'h', '5', 's', 'x', 'a', 'p', 'f', '0', 'z', 'v', '&', 'r', '?', 'w',
  331.                     '.', '6', '4', 'y', '%', 'k', '3', '9', '1', 'd', '!', 'b', ':', '/', 'e', '=', '8', 'i', 'm', 'n',
  332.                     't', 'g', 'j', 'c' },
  333.             { 'x', '6', 'k', 'f', 'e', 's', '&', 'g', 'a', '8', '.', 'b', 'o', 'l', 'u', 't', 'h', ':', '2', 'w', '9',
  334.                     'c', 'j', '7', 'n', 'v', 'z', '5', '0', '/', 'd', 'y', 'q', '%', '3', '?', 'i', '=', 'm', 'p', 'r',
  335.                     '1', '4', '!', ',' },
  336.             { '/', '2', 'u', 'o', 's', 'l', 'y', '3', 'a', 'b', '6', 'i', '4', '0', ':', 'h', '.', 'd', 'n', '5', 'p',
  337.                     '8', 'k', 'e', 'j', '9', 'x', '?', '1', '!', '7', ',', 'm', 'z', 'r', 'f', 'c', 'w', '&', 'q', '=',
  338.                     'v', '%', 'g', 't' },
  339.             { '&', '!', '4', '.', 'q', '0', 'm', '1', 'l', 'e', '9', 'u', 'k', 'd', 'i', '7', 'p', '%', '?', '6', 's',
  340.                     'j', '/', 'z', '=', 'y', ':', 'b', 'n', 't', '8', 'x', 'g', 'v', '5', 'a', 'w', 'c', 'h', 'f', '2',
  341.                     ',', '3', 'o', 'r' } };
  342.     int[] randomLevels = { 48, 36, 10, 23, 53, 39, 98, 33 };
  343.     String[] levelKeys = { "=:", "tp", "f:", "%/", "mq", "?=", "nx", "g3" };
  344.     char[] alphabet = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
  345.             't', 'u', 'v', 'w', 'x', 'y', 'z', ',', '.', '?', '&', '%', '!', '1', '2', '3', '4', '5', '6', '7', '8',
  346.             '9', '0', '/', ':', '=' };
  347.  
  348.     /**
  349.      * Launch the application.
  350.      */
  351.     public static void main(String[] args) {
  352.         EventQueue.invokeLater(new Runnable() {
  353.             public void run() {
  354.                 try {
  355.                     tool window = new tool();
  356.                 } catch (Exception e) {
  357.                     e.printStackTrace();
  358.                 }
  359.             }
  360.         });
  361.     }
  362.  
  363.     /**
  364.      * Create the application.
  365.      */
  366.     public tool() {
  367.         initialize();
  368.  
  369.     }
  370.  
  371.     // shuffle char array
  372.     char[] shuffle(char[] array) {
  373.         Random rand = new Random();
  374.  
  375.         for (int i = 0; i < array.length; i++) {
  376.             int randomIndexToSwap = rand.nextInt(array.length);
  377.             char temp = array[randomIndexToSwap];
  378.             array[randomIndexToSwap] = array[i];
  379.             array[i] = temp;
  380.         }
  381.  
  382.         return array;
  383.     }
  384.  
  385.     public String setLevel(String textIn) {
  386.         level = randomLevels[findInArrayString(levelKeys, textIn.substring(0, 2))];
  387.         return textIn.substring(2, textIn.length());
  388.     }
  389.  
  390.     private void initialize() {
  391.         /* start of frame initialization */
  392.         frame = new JFrame();
  393.         frame.setBounds(100, 100, 857, 528);
  394.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  395.         frame.getContentPane().setLayout(null);
  396.  
  397.         JRadioButton encrypt = new JRadioButton("Encrypt");
  398.         encrypt.setSelected(true);
  399.         encrypt.addActionListener(new ActionListener() {
  400.             public void actionPerformed(ActionEvent arg0) {
  401.                 if (encrypt.isSelected()) {
  402.                     deEncrypt.setSelected(false);
  403.                 }
  404.             }
  405.         });
  406.         encrypt.setBounds(366, 49, 155, 29);
  407.         frame.getContentPane().add(encrypt);
  408.  
  409.         deEncrypt.setBounds(250, 49, 114, 29);
  410.         deEncrypt.addActionListener(new ActionListener() {
  411.  
  412.             @Override
  413.             public void actionPerformed(ActionEvent e) {
  414.                 // TODO Auto-generated method stub
  415.                 if (deEncrypt.isSelected()) {
  416.                     encrypt.setSelected(false);
  417.                 }
  418.             }
  419.         });
  420.         frame.getContentPane().add(deEncrypt);
  421.  
  422.         JScrollPane scrollPane = new JScrollPane();
  423.         scrollPane.setBounds(21, 85, 365, 369);
  424.         frame.getContentPane().add(scrollPane);
  425.  
  426.         JTextArea In = new JTextArea();
  427.         scrollPane.setViewportView(In);
  428.         In.setLineWrap(true);
  429.         In.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null));
  430.  
  431.         JScrollPane scrollPane_1 = new JScrollPane();
  432.         scrollPane_1.setBounds(409, 85, 405, 369);
  433.         frame.getContentPane().add(scrollPane_1);
  434.         scrollPane_1.setViewportView(Out);
  435.         Out.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null));
  436.         Out.setLineWrap(true);
  437.         Out.setEditable(false);
  438.  
  439.         JMenuBar menuBar = new JMenuBar();
  440.         frame.setJMenuBar(menuBar);
  441.  
  442.         int mixUpKeyCount = 100;
  443.  
  444.         JMenuItem makeNewKeys = new JMenuItem("Make New Keys");
  445.         // Generates new keys to be copied back into script for use
  446.         makeNewKeys.addActionListener(new ActionListener() {
  447.             public void actionPerformed(ActionEvent e) {
  448.                 // make mix up keys
  449.                 String out = "String[] keys ={";
  450.                 for (int i = 0; i < mixUpKeyCount; i++) {
  451.                     String keyString = "";
  452.                     Random rnd = new Random();
  453.                     for (int j = 0; j < 3; j++) {
  454.                         keyString = keyString + alphabet[rnd.nextInt(alphabet.length)];
  455.                     }
  456.                     out += "\"" + keyString + "\"";
  457.                     if (i != mixUpKeyCount - 1) {
  458.                         out += ",";
  459.                     }
  460.                 }
  461.                 out += "};";
  462.  
  463.                 // make mix ups
  464.                 out += "char[][] mixedUps = {";
  465.                 char[] temp;
  466.                 for (int y = 0; y < mixUpKeyCount; y++) {
  467.                     out += "{";
  468.                     // shuffles the alphabet
  469.                     temp = shuffle(alphabet);
  470.  
  471.                     // prints to console with correct formating in case you would like to use new
  472.                     // keys
  473.                     for (int i = 0; i < temp.length; i++) {
  474.                         out += "'" + temp[i] + "'";
  475.                         if (i != temp.length - 1) {
  476.                             out += ",";
  477.                         }
  478.                     }
  479.                     out += "}";
  480.                     if (y != mixUpKeyCount - 1) {
  481.                         out += ",";
  482.                     }
  483.                 }
  484.                 // make random levels
  485.                 out += "};";
  486.                 out += "int[] randomLevels = {";
  487.                 for (int i = 0; i < randomLevels.length; i++) {
  488.                     String keyString = "";
  489.                     Random rnd = new Random();
  490.                     keyString = keyString + Integer.toString(rnd.nextInt(100 - 10) + 10);
  491.                     out += keyString;
  492.                     if (i != randomLevels.length - 1) {
  493.                         out += ",";
  494.                     }
  495.                 }
  496.                 out += "};";
  497.                 // make random level keys
  498.                 out += "String[] levelKeys ={";
  499.                 for (int i = 0; i < randomLevels.length; i++) {
  500.                     String keyString = "";
  501.                     Random rnd = new Random();
  502.                     for (int j = 0; j < 2; j++) {
  503.                         keyString = keyString + alphabet[rnd.nextInt(alphabet.length)];
  504.                     }
  505.                     out += "\"" + keyString + "\"";
  506.                     if (i != randomLevels.length - 1) {
  507.                         out += ",";
  508.                     }
  509.                 }
  510.                 out += "};";
  511.                 copyToClipBoard(out);
  512.             }
  513.         });
  514.         menuBar.add(makeNewKeys);
  515.  
  516.         Component horizontalStrut = Box.createHorizontalStrut(575);
  517.         menuBar.add(horizontalStrut);
  518.         frame.setVisible(true);
  519.         /* end of frame initialization */
  520.  
  521.         /* start of decryption/encryption logic */
  522.         In.addKeyListener(new KeyAdapter() {
  523.             @Override
  524.             public void keyReleased(KeyEvent arg0) {
  525.  
  526.                 /* pulls text from input and clears output */
  527.                 String inString = In.getText().toLowerCase();
  528.                 Out.setText("");
  529.  
  530.                 /* decryption logic */
  531.                 if (deEncrypt.isSelected()) {
  532.                     String temp = inString;
  533.                     int ecyrtptionLevelIndex = findInArrayString(levelKeys, temp.substring(0, 2));
  534.                     temp = temp.substring(2);
  535.  
  536.                     for (int i = 0; i < randomLevels[ecyrtptionLevelIndex]; i++) {
  537.                         try {
  538.                             temp = deEnccrypt(temp);
  539.                         } catch (IndexOutOfBoundsException e) {
  540.                             encrypt.setSelected(true);
  541.                             deEncrypt.setSelected(false);
  542.                         }
  543.                     }
  544.                     copyToClipBoard(temp);
  545.                     // clipboard.setContents(stringSelection, null);
  546.                     Out.setText(temp);
  547.                 } else {
  548.                     Random rnd = new Random();
  549.  
  550.                     // select random lvl key
  551.                     int levelSelectedIndex = rnd.nextInt(levelKeys.length);
  552.  
  553.                     String temp = inString;
  554.                     for (int i = 0; i < randomLevels[levelSelectedIndex]; i++) {
  555.                         temp = encrypt(temp);
  556.                     }
  557.                     copyToClipBoard(levelKeys[levelSelectedIndex] + temp);
  558.                     // clipboard.setContents(stringSelection, null);
  559.                     Out.setText(levelKeys[levelSelectedIndex] + temp);
  560.                 }
  561.             }
  562.         });
  563.     }
  564.  
  565.     void copyToClipBoard(String str) {
  566.         StringSelection stringSelection = new StringSelection(str);
  567.         Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
  568.         clipboard.setContents(stringSelection, null);
  569.     }
  570.  
  571.     String encrypt(String message) {
  572.         String inString = message;
  573.         Random rndRandom = new Random();
  574.         // chooses mix up index
  575.         int mixUpIndex = rndRandom.nextInt(keys.length);
  576.         String outString = keys[mixUpIndex];
  577.         // chooses the key that will be used for this level of encryption
  578.         char[] keyToUse = mixedUps[mixUpIndex];
  579.         // encrypts the string with the chosen key
  580.         for (int i = 0; i < inString.toCharArray().length; i++) {
  581.             if (inString.toCharArray()[i] != ' ') {
  582.                 outString = outString + Out.getText() + keyToUse[findInArray(alphabet, inString.toCharArray()[i])];
  583.             } else {
  584.                 outString = outString + " ";
  585.             }
  586.         }
  587.         return outString;
  588.     }
  589.  
  590.     String deEnccrypt(String in) {
  591.         String out = "";
  592.         // finds which key was used for this encryption
  593.         char[] keyUsed = mixedUps[findInArrayString(keys, in.substring(0, 3))];
  594.         for (int i = 3; i < in.toCharArray().length; i++) {
  595.             if (in.toCharArray()[i] != ' ') {
  596.                 out = out + alphabet[findInArray(keyUsed, in.toCharArray()[i])];
  597.             } else {
  598.                 out = out + " ";
  599.             }
  600.         }
  601.         return out;
  602.     }
  603.  
  604.     int findInArrayString(String[] array, String value) {
  605.         for (int i = 0; i < array.length; i++) {
  606.             if (array[i].equals(value)) {
  607.                 return i;
  608.             }
  609.         }
  610.         return -1;
  611.     }
  612.  
  613.     int findInArray(char[] array, char value) {
  614.         for (int i = 0; i < array.length; i++) {
  615.             if (array[i] == value) {
  616.                 return i;
  617.             }
  618.         }
  619.         return -1;
  620.     }
  621. }
  622.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement