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

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.20141.19 Кб23Application1.class
  • #
    01.05.20141.89 Кб24Application1.java
  • #
    01.05.201459 б22Compile.bat
  • #
    01.05.2014293.38 Кб34Lab3.doc
  • #
    01.05.20146.65 Кб23MainFrame.class
  • #
    01.05.20149.02 Кб23MainFrame.java
  • #
    01.05.2014455 б22MainFrame_decryptButton_mouseAdapter.class
  • #
    01.05.2014455 б22MainFrame_encryptButton_mouseAdapter.class
  • #
    01.05.2014491 б22MainFrame_regenerateKeys_actionAdapter.class
  • #
    01.05.2014485 б22MainFrame_restoreKeys_actionAdapter.class
  • #
    01.05.20143.81 Кб21RSACrypt.class