⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gui.java

📁 java算法实现AES、DES、3DES、MD5、RSA五种加密算法
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
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 + -