Скачиваний:
26
Добавлен:
01.05.2014
Размер:
9 Кб
Скачать
☆

import java.awt.*;
import java.awt.event.*;
import java.math.BigInteger;

import javax.swing.JFrame;

public class MainFrame extends JFrame {
    public MainFrame() {
        try {
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            jbInit();
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }

    /**
     * Component initialization.
     *
     * @throws java.lang.Exception
     */
    private void jbInit() throws Exception {
        crypt.setKeyLength(512);
        this.getContentPane().setBackground(SystemColor.control);
        setTitle("МСЗКИ ЛР №3. Шифрование RSA");
        this.getContentPane().setLayout(null);
        this.setSize(400, 470);
        commonKeyPartText.setEditable(true);
        commonKeyPartText.setText(crypt.getCommonKeyPart().toString(radix));
        commonKeyPartText.setBounds(new Rectangle(4, 32, 385, 50));
        privateKeyText.setEditable(true);
        privateKeyText.setText(crypt.getPrivateKey().toString(radix));
        privateKeyText.setBounds(new Rectangle(4, 167, 385, 50));
        label1.setText("Общая часть ключа");
        label1.setBounds(new Rectangle(5, 16, 199, 14));
        label2.setText("Открытая часть ключа");
        label2.setBounds(new Rectangle(4, 88, 202, 13));
        label3.setText("Закрытая часть ключа");
        label3.setBounds(new Rectangle(5, 154, 163, 13));
        label6.setText("Открытое сообщение");
        label6.setBounds(new Rectangle(5, 240, 182, 17));
        label5.setFont(new java.awt.Font("Dialog", Font.BOLD, 13));
        encryptButton.setLabel("Шифрование");
        encryptButton.setBounds(new Rectangle(72, 315, 100, 25));
        encryptButton.addMouseListener(new MainFrame_encryptButton_mouseAdapter(this));
        decryptButton.setLabel("Дешифрование");
        decryptButton.setBounds(new Rectangle(194, 315, 100, 25));
        decryptButton.addMouseListener(new MainFrame_decryptButton_mouseAdapter(this));
        label7.setText("Зашифрованное сообщение");
        label7.setBounds(new Rectangle(5, 340, 164, 18));
        publicKeyText.setEditable(true);
        publicKeyText.setBounds(new Rectangle(5, 100, 385, 50));
        keysMenu.setLabel("Ключи");
        regenerateKeys.setLabel("Сгенерировать заново");
        regenerateKeys.addActionListener(new
                                         MainFrame_regenerateKeys_actionAdapter(this));
        restoreKeys.setLabel("Восстановить значения");
        restoreKeys.addActionListener(new MainFrame_restoreKeys_actionAdapter(this));
        sourceText.setText("");
        sourceText.setBounds(new Rectangle(5, 258, 385, 50));
        label5.setFont(new java.awt.Font("Dialog", Font.BOLD, 13));
        label5.setText("Шифрование и дешифрование");
        label5.setBounds(new Rectangle(4, 222, 230, 25));
        label4.setFont(new java.awt.Font("Dialog", Font.BOLD, 13));
        label4.setText("Ключи");
        label4.setBounds(new Rectangle(4, 2, 106, 12));
        cryptText.setBounds(new Rectangle(5, 360, 385, 50));
        mainMenu.add(keysMenu);
        keysMenu.add(regenerateKeys);
        keysMenu.add(restoreKeys);
        this.getContentPane().add(label6, null);
        this.getContentPane().add(label7, null);
        this.getContentPane().add(sourceText, null);
        this.getContentPane().add(cryptText, null);
        this.getContentPane().add(decryptButton, null);
        this.getContentPane().add(encryptButton, null);
        this.getContentPane().add(label5, null);
        this.getContentPane().add(label4, null);
        this.getContentPane().add(label3, null);
        this.getContentPane().add(publicKeyText, null);
        this.getContentPane().add(label2, null);
        this.getContentPane().add(privateKeyText, null);
        this.getContentPane().add(commonKeyPartText, null);
        this.getContentPane().add(label1, null);
        publicKeyText.setText(crypt.getPublicKey().toString(radix));
        this.setMenuBar(mainMenu);
    }
    private RSACrypt crypt = new RSACrypt();
    private int radix = 16;
    TextArea commonKeyPartText = new TextArea("", 0, 0, TextArea.SCROLLBARS_VERTICAL_ONLY);
    TextArea publicKeyText = new TextArea("", 0, 0, TextArea.SCROLLBARS_VERTICAL_ONLY);
    TextArea privateKeyText = new TextArea("", 0, 0, TextArea.SCROLLBARS_VERTICAL_ONLY);
    Label label1 = new Label();
    Label label2 = new Label();
    Label label3 = new Label();
    Label label4 = new Label();
    Label label5 = new Label();
    TextArea sourceText = new TextArea("", 0, 0, TextArea.SCROLLBARS_VERTICAL_ONLY);
    Label label6 = new Label();
    Button encryptButton = new Button();
    Button decryptButton = new Button();
    Label label7 = new Label();
    TextArea cryptText = new TextArea("", 0, 0, TextArea.SCROLLBARS_VERTICAL_ONLY);
    MenuBar mainMenu = new MenuBar();
    Menu keysMenu = new Menu();
    MenuItem regenerateKeys = new MenuItem();
    MenuItem restoreKeys = new MenuItem();

    public void encryptButton_mouseClicked(MouseEvent e) {
        readKeysValues();
        int start = 0;
        int mLength = crypt.getKeyLength()/8;
        int lastIndex = sourceText.getText().length() - 1;
        StringBuffer res = new StringBuffer();
        byte[] cryptBytes;
        while (start <= lastIndex) {
            if (start + mLength <= lastIndex) {
                cryptBytes = crypt.Encrypt(
                        sourceText.getText().substring(start, start+mLength).getBytes());
            } else {
                cryptBytes = crypt.Encrypt(
                        sourceText.getText().substring(start).getBytes());
            }
            res.append(crypt.BytesToString(cryptBytes));
            start += mLength;
        }
        cryptText.setText(res.toString());
    }

    public void decryptButton_mouseClicked(MouseEvent e) {
        readKeysValues();
        int start = 0;
        int mLength = crypt.getKeyLength()/4;
        int lastIndex = cryptText.getText().length() - 1;
        StringBuffer res = new StringBuffer();
        String cryptMessage;
        while (start <= lastIndex) {
            if (start + mLength <= lastIndex)
                cryptMessage = cryptText.getText().substring(start, start+mLength);
            else
                cryptMessage = cryptText.getText().substring(start);
            BigInteger t = new BigInteger(cryptMessage, radix);
            String tt = new String(crypt.Decrypt(t.toByteArray()));
            res.append(tt);
            start += mLength;
        }
        sourceText.setText(res.toString());
    }

    public void regenerateKeys_actionPerformed(ActionEvent e) {
        crypt.regenerateKeys();
        commonKeyPartText.setText(crypt.getCommonKeyPart().toString(radix));
        publicKeyText.setText(crypt.getPublicKey().toString(radix));
        privateKeyText.setText(crypt.getPrivateKey().toString(radix));
    }

    public void restoreKeys_actionPerformed(ActionEvent e) {
        crypt.restoreCommonKeyPart();
        crypt.restorePrivateKey();
        crypt.restorePublicKey();
        commonKeyPartText.setText(crypt.getCommonKeyPart().toString(radix));
        publicKeyText.setText(crypt.getPublicKey().toString(radix));
        privateKeyText.setText(crypt.getPrivateKey().toString(radix));
    }

    private void readKeysValues() {
        crypt.setCommonKeyPart(new BigInteger(commonKeyPartText.getText(), radix));
        crypt.setPublicKey(new BigInteger(publicKeyText.getText(), radix));
        crypt.setPrivateKey(new BigInteger(privateKeyText.getText(), radix));
    }

}


class MainFrame_restoreKeys_actionAdapter implements ActionListener {
    private MainFrame adaptee;
    MainFrame_restoreKeys_actionAdapter(MainFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.restoreKeys_actionPerformed(e);
    }
}


class MainFrame_regenerateKeys_actionAdapter implements ActionListener {
    private MainFrame adaptee;
    MainFrame_regenerateKeys_actionAdapter(MainFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void actionPerformed(ActionEvent e) {
        adaptee.regenerateKeys_actionPerformed(e);
    }
}


class MainFrame_decryptButton_mouseAdapter extends MouseAdapter {
    private MainFrame adaptee;
    MainFrame_decryptButton_mouseAdapter(MainFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void mouseClicked(MouseEvent e) {
        adaptee.decryptButton_mouseClicked(e);
    }
}


class MainFrame_encryptButton_mouseAdapter extends MouseAdapter {
    private MainFrame adaptee;
    MainFrame_encryptButton_mouseAdapter(MainFrame adaptee) {
        this.adaptee = adaptee;
    }

    public void mouseClicked(MouseEvent e) {
        adaptee.encryptButton_mouseClicked(e);
    }
}

Соседние файлы в папке Лабораторная работа 31
  • #
    01.05.2014455 б25MainFrame_decryptButton_mouseAdapter.class
  • #
    01.05.2014455 б25MainFrame_encryptButton_mouseAdapter.class
  • #
    01.05.2014491 б25MainFrame_regenerateKeys_actionAdapter.class
  • #
    01.05.2014485 б25MainFrame_restoreKeys_actionAdapter.class
  • #
    01.05.20147 Кб26MainFrame.class
  • #
    01.05.20149 Кб26MainFrame.java
  • #
    01.05.20144 Кб24RSACrypt.class
  • #
    01.05.20147 Кб26RSACrypt.java
  • #
    01.05.201423 б24RunLab3.bat