📄 gui.java
字号:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import java.math.BigInteger;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
class MyGUI extends JFrame implements ActionListener{
//菜单
JMenuBar menu = new JMenuBar();
JMenu file_menu = new JMenu("文件");
JMenuItem quit_item = new JMenuItem("退出(Q)");
JMenu encryption_menu = new JMenu("加密");
JMenuItem encryptionAES_item = new JMenuItem("AES");
JMenuItem encryptionDES_item = new JMenuItem("DES");
JMenuItem encryption3DES_item = new JMenuItem("3DES");
JMenuItem encryptionMD5_item = new JMenuItem("MD5");
JMenuItem encryptionRSA_item = new JMenuItem("RSA");
JMenu decryption_menu = new JMenu("解密");
JMenuItem decryptionAES_item = new JMenuItem("AES");
JMenuItem decryptionDES_item = new JMenuItem("DES");
JMenuItem decryption3DES_item = new JMenuItem("3DES");
//JMenuItem decryptionMD5_item = new JMenuItem("MD5");
JMenuItem decryptionRSA_item = new JMenuItem("RSA");
JMenu help_menu = new JMenu("帮助");
JMenuItem help_item = new JMenuItem("帮助(H)");
JMenuItem about_item = new JMenuItem("关于(A)");
//
JLabel input_label = new JLabel(" 源文件或其地址");
JTextField input_text = new JTextField();
JButton input_button = new JButton("选择");
JLabel temp_label = new JLabel("加密文件或其地址");
JTextField temp_text = new JTextField();
JButton temp_button = new JButton("选择");
JLabel output_label = new JLabel("解密文件或其地址");
JTextField output_text = new JTextField();
JButton output_button = new JButton("选择");
JLabel key1_label =new JLabel("公钥");
JTextField key1_text =new JTextField();
JLabel key2_label =new JLabel("私钥");
JTextField key2_text =new JTextField();
JButton gen =new JButton ("执行");
JLabel rsainput =new JLabel("RSA输入及密码");
JTextField input = new JTextField();
JTextField keys = new JTextField();
JLabel rsaoutput =new JLabel("RSA输出");
JTextField output =new JTextField();
JLabel md5input_label =new JLabel("MD5输出及RSA加密输出");
JTextField md5temp_text =new JTextField();
JTextField md5output_text =new JTextField();
JLabel a=new JLabel();
JLabel b=new JLabel();
JLabel c=new JLabel();
JLabel d=new JLabel();
JLabel e=new JLabel();
JLabel f=new JLabel();
JLabel g=new JLabel();
JLabel h=new JLabel();
//帮助对话框
JDialog help_dialog = new JDialog(this,"帮助",true);
Container help_ContentPane = help_dialog.getContentPane();
JLabel help_label = new JLabel("点击左边的按钮,查看相应加密技术的简介!");
JPanel buttonPanel = new JPanel();
JButton AES_button = new JButton("AES");
JButton DES_button = new JButton("DES");
JButton DES3_button = new JButton("3DES");
JButton MD5_button = new JButton("MD5");
JButton RSA_button = new JButton("RSA");
JTextArea t = new JTextArea();
//关于对话框
JDialog about_dialog = new JDialog(this,"关于",true);
JLabel name_label = new JLabel("软件名称:JAVA加密&解密平台");
JLabel edition_label = new JLabel("版本:1.0");
JLabel author_label = new JLabel("开发者:潘明福、黄志川、於博");
Container about_ContentPane = about_dialog.getContentPane();
public MyGUI(){
setTitle("JAVA加密&解密平台V1.0");
setSize(1200,300);
setResizable(false);
Container ContentPane = getContentPane();
//菜单:
// -开始 加密 解密 帮助
// -退出 -AES -AES -帮助
// DES DES 关于
// 3DES 3DES
// MD5 (MD5)
// RSA RSA
//开始菜单
quit_item.setMnemonic('Q');
quit_item.addActionListener(this);
file_menu.add(quit_item);
//加密菜单
encryptionAES_item.setMnemonic('A');
encryptionAES_item.addActionListener(this);
encryptionDES_item.setMnemonic('D');
encryptionDES_item.addActionListener(this);
encryption3DES_item.setMnemonic('3');
encryption3DES_item.addActionListener(this);
encryptionMD5_item.setMnemonic('M');
encryptionMD5_item.addActionListener(this);
encryptionRSA_item.setMnemonic('R');
encryptionRSA_item.addActionListener(this);
encryption_menu.add(encryptionAES_item);
encryption_menu.add(encryptionDES_item);
encryption_menu.add(encryption3DES_item);
encryption_menu.add(encryptionMD5_item);
encryption_menu.add(encryptionRSA_item);
//解密菜单
decryptionAES_item.setMnemonic('A');
decryptionAES_item.addActionListener(this);
decryptionDES_item.setMnemonic('D');
decryptionDES_item.addActionListener(this);
decryption3DES_item.setMnemonic('3');
decryption3DES_item.addActionListener(this);
//decryptionMD5_item.setMnemonic('M');
//decryptionMD5_item.addActionListener(this);
decryptionRSA_item.setMnemonic('R');
decryptionRSA_item.addActionListener(this);
decryption_menu.add(decryptionAES_item);
decryption_menu.add(decryptionDES_item);
decryption_menu.add(decryption3DES_item);
//decryption_menu.add(decryptionMD5_item);
decryption_menu.add(decryptionRSA_item);
//帮助菜单
help_item.setMnemonic('H');
help_item.addActionListener(this);
about_item.setMnemonic('A');
about_item.addActionListener(this);
help_menu.add(help_item);
help_menu.add(about_item);
menu.add(file_menu);
menu.add(encryption_menu);
menu.add(decryption_menu);
menu.add(help_menu);
this.setJMenuBar(menu);
//
// 源 文件或其地址 -----输入框------
//加密文件或其地址 -----输入框------
//解密文件或其地址 -----输入框------
input_label.setHorizontalAlignment(JTextField.CENTER);
input_label.setFont(new Font("黑体",0,20));
input_text.setHorizontalAlignment(JTextField.LEFT);
input_text.setFont(new Font("黑体",0,20));
temp_label.setHorizontalAlignment(JTextField.CENTER);
temp_label.setFont(new Font("黑体",0,20));
temp_text.setHorizontalAlignment(JTextField.LEFT);
temp_text.setFont(new Font("黑体",0,20));
output_label.setHorizontalAlignment(JTextField.CENTER);
output_label.setFont(new Font("黑体",0,20));
output_text.setHorizontalAlignment(JTextField.LEFT);
output_text.setFont(new Font("黑体",0,20));
key1_label.setHorizontalAlignment(JTextField.CENTER);
key1_label.setFont(new Font("黑体",0,20));
key1_text.setHorizontalAlignment(JTextField.LEFT);
key1_text.setFont(new Font("黑体",0,20));
key2_label.setHorizontalAlignment(JTextField.CENTER);
key2_label.setFont(new Font("黑体",0,20));
key2_text.setHorizontalAlignment(JTextField.LEFT);
key2_text.setFont(new Font("黑体",0,20));
key2_text.setEditable(false);
output.setEditable(false);
md5temp_text.setEditable(false);
md5output_text.setEditable(false);
md5temp_text.setHorizontalAlignment(JTextField.LEFT);
md5temp_text.setFont(new Font("黑体",0,15));
md5input_label.setHorizontalAlignment(JTextField.CENTER);
md5input_label.setFont(new Font("黑体",0,20));
md5output_text.setHorizontalAlignment(JTextField.LEFT);
md5output_text.setFont(new Font("黑体",0,15));
rsainput.setHorizontalAlignment(JTextField.CENTER);
rsainput.setFont(new Font("黑体",0,20));
input.setHorizontalAlignment(JTextField.LEFT);
input.setFont(new Font("黑体",0,20));
keys.setHorizontalAlignment(JTextField.LEFT);
keys.setFont(new Font("黑体",0,20));key1_text.setHorizontalAlignment(JTextField.LEFT);
rsaoutput.setFont(new Font("黑体",0,20));
rsaoutput.setHorizontalAlignment(JTextField.CENTER);
output.setFont(new Font("黑体",0,20));
output.setHorizontalAlignment(JTextField.LEFT);
ContentPane.setLayout(new GridLayout(6,5,12,12));
ContentPane.add(a);
ContentPane.add(input_label);
ContentPane.add(input_text);
ContentPane.add(input_button);
ContentPane.add(b);
input_button.addActionListener(this);
ContentPane.add(c);
ContentPane.add(temp_label);
ContentPane.add(temp_text);
ContentPane.add(temp_button);
ContentPane.add(d);
temp_button.addActionListener(this);
ContentPane.add(e);
ContentPane.add(output_label);
ContentPane.add(output_text);
ContentPane.add(output_button);
ContentPane.add(f);
output_button.addActionListener(this);
ContentPane.add(key1_label);
ContentPane.add(key1_text);
ContentPane.add(key2_label);
ContentPane.add(key2_text);
ContentPane.add(gen);
ContentPane.add(rsainput);
ContentPane.add(input);
ContentPane.add(keys);
ContentPane.add(rsaoutput);
ContentPane.add(output);
gen.addActionListener(this);
ContentPane.add(g);
ContentPane.add(md5input_label);
ContentPane.add(md5temp_text);
ContentPane.add(md5output_text);
ContentPane.add(h);
//帮助对话框:
//点击左边的按钮,查看相应加密技术的简介!
// AES |--------------------------|
// DES | |
// 3DES | 文本域 |
// MD5 | |
// RSA |--------------------------|
help_label.setHorizontalAlignment(JTextField.CENTER);
help_label.setFont(new Font("黑体",0,20));
help_ContentPane.add(help_label,"North");
buttonPanel.setLayout(new GridLayout(5,1));
AES_button.setFont(new Font("黑体",0,25));
AES_button.setToolTipText("点击显示AES简介");//给按钮增加工具提示
AES_button.addActionListener(this);
DES_button.setFont(new Font("黑体",0,25));
DES_button.setToolTipText("点击显示DES简介");
DES_button.addActionListener(this);
DES3_button.setFont(new Font("黑体",0,25));
DES3_button.setToolTipText("点击显示3DES简介");
DES3_button.addActionListener(this);
MD5_button.setFont(new Font("黑体",0,25));
MD5_button.setToolTipText("点击显示MD5简介");
MD5_button.addActionListener(this);
RSA_button.setFont(new Font("黑体",0,25));
RSA_button.setToolTipText("点击显示RSA简介");
RSA_button.addActionListener(this);
buttonPanel.add(AES_button);
buttonPanel.add(DES_button);
buttonPanel.add(DES3_button);
buttonPanel.add(MD5_button);
buttonPanel.add(RSA_button);
help_ContentPane.add(buttonPanel,"West");
t.setFont(new Font("黑体",0,20));
t.setEditable(false);//设置文本域不可编辑
help_ContentPane.add(t,"Center");
//关于对话框:
//软件名称:JAVA加密&解密平台
// 版本:1.0
//开发者:潘明福、黄志川、於博
name_label.setHorizontalAlignment(JTextField.CENTER);
name_label.setFont(new Font("黑体",0,20));
edition_label.setHorizontalAlignment(JTextField.CENTER);
edition_label.setFont(new Font("黑体",0,20));
author_label.setHorizontalAlignment(JTextField.CENTER);
author_label.setFont(new Font("黑体",0,20));
about_ContentPane.setLayout(new GridLayout(3,1));
about_ContentPane.add(name_label);
about_ContentPane.add(edition_label);
about_ContentPane.add(author_label);
addWindowListener(new WL());
}
public void actionPerformed(ActionEvent e){
try{
if(e.getSource() == quit_item){//点击开始菜单中的退出,则退出平台
System.exit(0);
}
else if(e.getSource() == encryptionAES_item){//点击加密菜单中的AES,则用AES方法加密
String input_string = input_text.getText();
String temp_string = temp_text.getText();
String output_string = output_text.getText();
encryptfile(input_string,temp_string);
}
else if(e.getSource() == encryptionDES_item){//点击加密菜单中的DES,则用DES方法加密
String input_string = input_text.getText();
String temp_string = temp_text.getText();
String output_string = output_text.getText();
desencrypt(input_string,temp_string);
}
else if(e.getSource() == encryption3DES_item){//点击加密菜单中的3DES,则用3DES方法加密
String input_string = input_text.getText();
String temp_string = temp_text.getText();
String output_string = output_text.getText();
des3encrypt(input_string,temp_string);//}
}
else if(e.getSource() == encryptionMD5_item){//点击加密菜单中的MD5,则用MD5方法加密
String input_string = input_text.getText();
MD5 md = new MD5();
File src=new File(input_string);
FileReader fr =new FileReader(src);
BufferedReader br=new BufferedReader(fr);
String inline;
StringBuffer sbvar=new StringBuffer("");
while((inline=br.readLine())!=null){
sbvar.append(inline);
sbvar.append('\n');
}
sbvar.setLength(sbvar.length()-1);
String input1=new String(sbvar);
String str = md.calcMD5(input1);
md5temp_text.setEditable(true);
md5temp_text.setText(str);
md5temp_text.setEditable(false);
change chang =new change();
int [] sj=new int[str.length()/6+1];
for(int i=0;i<(str.length()/6);i++){
sj[i]=chang.change(str.substring(6*i,(6*i)+6));
if(i==str.length()/6-1) sj[i+1]=chang.change(str.substring(6*i+6));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -