JAVA   85
Encrypt Java
Guest on 14th August 2022 06:36:20 AM


  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import java.util.*;
  4. import javax.swing.*;
  5. import java.applet.Applet;
  6.  
  7. public class Encrypt extends Applet implements ActionListener {
  8.    JTextField plaintext, encode, decode, multiplier, modulus;
  9.    JTextField[] privatekey, publickey;
  10.    JButton record, encodebutton, decodebutton;
  11.    Color bck = new Color(255,255,223);
  12.    Font fnt = new Font("TimesRoman", Font.BOLD, 16);
  13.    static final long serialVersionUID = 11L;
  14.    JLabel l1;
  15.  
  16.    public void init() {
  17.       privatekey = new JTextField[8];
  18.       setLayout(new GridLayout(14,1,10,10));
  19.       setBackground(bck);
  20.       add(l1 = new JLabel("1. Enter Private Key"));
  21.       //l1.setFont(fnt);
  22.      
  23.       JPanel p = new JPanel();
  24.       p.setLayout(new GridLayout(1,8));
  25.       p.setBackground(bck);
  26.       p.add(privatekey[0] = new JTextField("3"));
  27.       p.add(privatekey[1] = new JTextField("5"));
  28.       p.add(privatekey[2] = new JTextField("9"));
  29.       p.add(privatekey[3] = new JTextField("18"));
  30.       p.add(privatekey[4] = new JTextField("40"));
  31.       p.add(privatekey[5] = new JTextField("83"));
  32.       p.add(privatekey[6] = new JTextField("157"));
  33.       p.add(privatekey[7] = new JTextField("317"));
  34.       add(p);
  35.      
  36.       add(new JLabel("2. Enter Multiplier and Modulus and Press Record"));
  37.      
  38.       JPanel q = new JPanel();
  39.       q.setLayout(new FlowLayout());
  40.       q.setBackground(bck);            
  41.       q.add (new JLabel ("Multiplier"));
  42.       q.add (multiplier = new JTextField("4571"));
  43.       q.add (new JLabel ("Modulus"));
  44.       q.add (modulus = new JTextField("7187"));
  45.       q.add (new JLabel (""));
  46.       q.add (record = new JButton("Record"));
  47.       record.addActionListener(this);
  48.       add(q);
  49.      
  50.       add (new JLabel("Public Key"));
  51.      
  52.       JPanel z = new JPanel();
  53.       z.setLayout(new GridLayout(1,8));
  54.       z.setBackground(bck);
  55.       publickey = new JTextField[8];
  56.       for (int i=0 ; i<8 ; i++)
  57.          z.add(publickey[i] = new JTextField(""));
  58.       add(z);
  59.      
  60.       add(new JLabel("3. Enter Text Message"));
  61.      
  62.       add(plaintext=new JTextField(""));
  63.      
  64.       JPanel r = new JPanel();
  65.       r.setLayout(new GridLayout(1,4));
  66.       r.setBackground(bck);
  67.       r.add(new JLabel(""));
  68.       r.add(new JLabel("4. Press Encrypt"));
  69.       r.add(new JLabel(""));
  70.       r.add(encodebutton = new JButton("Encrypt"));
  71.       encodebutton.addActionListener(this);
  72.       add(r);
  73.      
  74.       add(new JLabel("Encoded Message"));
  75.      
  76.       add(encode = new JTextField(""));
  77.      
  78.       JPanel t = new JPanel();
  79.       t.setLayout(new GridLayout(1,4));
  80.       t.setBackground(bck);
  81.       t.add(new JLabel(""));
  82.       t.add(new JLabel("5. Press Decrypt"));
  83.       t.add(new JLabel(""));
  84.       t.add(decodebutton = new JButton("Decrypt"));
  85.       decodebutton.addActionListener(this);
  86.       add(t);
  87.      
  88.       add(new JLabel("Decoded Message"));
  89.      
  90.       add(decode = new JTextField(""));
  91.    }
  92.    
  93.    public int getInt(JTextField t)  {  return Integer.parseInt(t.getText());  }
  94.    
  95.    public void setInt(int i, JTextField t)  {  t.setText(String.valueOf(i));  }
  96.    
  97.    public int modulo (int i, int j)  {  return i - (i/j)*j;  }
  98.    
  99.    public void superIncrease() {
  100.       int sum = getInt(privatekey[0]);
  101.       for (int i=1 ; i < 8 ; i++) {
  102.          if (sum >= getInt(privatekey[i])) setInt(sum+1, privatekey[i]);
  103.          sum += getInt(privatekey[i]);
  104.       }
  105.       if (getInt(modulus) <= getInt(privatekey[7]))
  106.          setInt(getInt(privatekey[7])+1, modulus);
  107.    }
  108.  
  109.    public void computePublicKey() {
  110.       for (int i=0 ; i < 8 ; i++)
  111.          setInt(modulo(getInt(privatekey[i])*getInt(multiplier),
  112.                        getInt(modulus)), publickey[i]);
  113.    }
  114.  
  115.    public int translateChar(char x, JTextField[] k) {
  116.       int sum=0;
  117.  
  118.       for (int i=0; i < 8; i++) {
  119.          if ((x % 2) == 1) sum += getInt(k[i]);
  120.          x /=2;
  121.       }
  122.       return sum;
  123.    }
  124.  
  125.    public void computeEncodedText() {
  126.       String s = new String("");
  127.       String m = new String(plaintext.getText());
  128.  
  129.       int len = m.length();
  130.       if (len <= 0) return;
  131.  
  132.       s = String.valueOf(translateChar(m.charAt(0), publickey));
  133.       for (int i=1 ; i < len ; i++) {
  134.          s += "+" + String.valueOf(translateChar(m.charAt(i), publickey));
  135.       }
  136.       encode.setText(s);
  137.    }
  138.  
  139.    public int xlateBack(int x) {
  140.       int m=128;
  141.       int ch=0;
  142.       for (int i=7 ; i >= 0 && x > 0 ; i--) {
  143.          if (getInt(privatekey[i]) <= x) {
  144.             x -= getInt(privatekey[i]);
  145.             ch += m;
  146.          }
  147.          m /= 2;
  148.       }
  149.       return ch;
  150.    }
  151.  
  152.    public int inverse() {
  153.       int f;
  154.       int a = getInt(multiplier);
  155.       int b = getInt(modulus);
  156.       for (int k=1 ; k < b ; k++) {
  157.          f = 0;
  158.          for (int j=0 ; j < b ; j++)
  159.             if (modulo(k*modulo(a*j,b), b) == j) f += 1; else break;
  160.          if (f == b) return k;
  161.       }
  162.       return 0;
  163.    }
  164.  
  165.    public void computeDecodeText(String s) {
  166.       String str = new String("");
  167.       int tok;
  168.       int inv = inverse();
  169.       try {
  170.          StringTokenizer t = new StringTokenizer(s, "+");
  171.          while (true) {
  172.             tok = Integer.parseInt(t.nextToken());
  173.             str += (char)xlateBack(modulo(inv*tok, getInt(modulus)));
  174.          }
  175.       }
  176.       catch (NoSuchElementException e) {}
  177.       decode.setText(str);
  178.    }
  179.  
  180.    public void actionPerformed (ActionEvent evt) {
  181.       for (int i=0 ; i < 8 ; i++) {
  182.          if (evt.getSource() == privatekey[i]) {
  183.             superIncrease();  
  184.             return;
  185.          }
  186.       }
  187.  
  188.       if (evt.getSource() == record) computePublicKey();  
  189.       else if (evt.getSource() == encodebutton) computeEncodedText();
  190.       else if (evt.getSource() == decodebutton)
  191.          computeDecodeText(encode.getText());
  192.    }
  193.  
  194.    public void processEvent (AWTEvent evt) {
  195.       if (((WindowEvent)evt).getNewState() == WindowEvent.WINDOW_CLOSED)
  196.          System.out.println("Yikes");
  197.    }
  198. }

Raw Paste

Login or Register to edit or fork this paste. It's free.