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

📄 test.java

📁 DES的加密! DES的加密! DES的加密! DES的加密! DES的加密! DES的加密! DES的加密! DES的加密! DES的加密! DES的加密! DES的加密! D
💻 JAVA
字号:
package DES_RSA;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

import java.util.*;
public class Test extends JFrame implements ActionListener{  
	//创建面板对象
	JPanel left=new JPanel();
	JPanel right=new JPanel();
	JPanel p1=new JPanel();
	JPanel p2=new JPanel();
	JPanel p3=new JPanel();
	JPanel p4=new JPanel();
	JPanel p5=new JPanel();
	JPanel p6=new JPanel();
	JPanel p7=new JPanel();
	JPanel p8=new JPanel();
	JPanel p9=new JPanel();
	JPanel p10=new JPanel();
	JPanel p11=new JPanel();
	JPanel p12=new JPanel();
	JPanel p13=new JPanel();
	JPanel p14=new JPanel();
	//创建按钮对象
	JButton b1=new JButton("确定");
	JButton b2=new JButton("确定");
	JButton b3=new JButton("确定");
	JButton b4=new JButton("加密");
	JButton b5=new JButton("B解密");
	JButton b6=new JButton("C解密");
	//创建文本框对象
	JTextField text1=new JTextField(9);
	JTextField text2=new JTextField(9);
	JTextField text3=new JTextField(9);
	JTextField text4=new JTextField(9);
	JTextField text5=new JTextField(9);
	JTextField text6=new JTextField(9);
	JTextField text7=new JTextField(14);
	//创建文本域对象
	JTextArea textarea1=new JTextArea(11,32);
	JTextArea textarea2=new JTextArea(10,30);
	JTextArea textarea3=new JTextArea(10,30);
	//创建标签对象
	JLabel lab1=new JLabel("随机产生A用户的公钥和私钥                            ");
	JLabel lab2=new JLabel("A用户公钥");
	JLabel lab3=new JLabel("A用户私钥");
	JLabel lab4=new JLabel("随机产生B用户的公钥和私钥                            ");
	JLabel lab5=new JLabel("B用户公钥");
	JLabel lab6=new JLabel("B用户私钥");
	JLabel lab11=new JLabel("随机产生C用户的公钥和私钥                           ");
	JLabel lab12=new JLabel("    C用户公钥");
	JLabel lab13=new JLabel("C用户私钥");
	JLabel lab7=new JLabel("A发送的明文和密钥  ");
	JLabel lab8=new JLabel("B收到的密文                                       ");
	JLabel lab9=new JLabel("B解密的明文                                       ");
	//创建DES&&RSA对象
	DES des=new DES();
	RSA rsa=new RSA();
	private  static long aN,aE,aD,bN,bE,bD,cN,cE,cD;
	String miwen,mingwen,mingwen1;
	public Test(){
		//setModal(true);
		setBackground(Color.LIGHT_GRAY);
		setForeground(Color.red);
		//布局开始!
		Container contentPane=this.getContentPane();
		contentPane.setLayout(new GridLayout(1,2));
		JScrollPane scroll1=new JScrollPane(textarea1);
		JScrollPane scroll2=new JScrollPane(textarea2);
		JScrollPane scroll3=new JScrollPane(textarea3);
		contentPane.add(left);
		contentPane.add(right);
		//左半面
		left.add(p1);p1.add(lab1);p1.add(b1);
		left.add(p2);p2.add(lab2);p2.add(text1);p2.add(lab3);p2.add(text2);
		left.add(p3);p3.add(lab4);p3.add(b2);
		left.add(p4);p4.add(lab5);p4.add(text3);p4.add(lab6);p4.add(text4);
		left.add(p11);p11.add(lab11);p11.add(b3);
		left.add(p12);p12.add(lab12);p12.add(text5);p12.add(lab13);p12.add(text6);
		left.add(p13);
		left.add(p5);p5.add(lab7);p5.add(text7);p5.add(b4);
		left.add(p6);p6.add(scroll1);
		//右半面
		right.add(p7);p7.add(lab8);p7.add(b5);
		right.add(p8);p8.add(scroll2);
		right.add(p9);p9.add(lab9);p9.add(b6);
		right.add(p10);p10.add(scroll3);
        //(长,高)
		setSize(820,580);
		Dimension screen=Toolkit.getDefaultToolkit().getScreenSize();
		setLocation((screen.width-600)/2,(screen.height-620/2));
		setTitle("忆玥制作团队:DES实现数据加解密RSA实现数字签名!");
		setResizable(false);
		setVisible(true);
		//布局结束!
		b1.addActionListener(this);
		b2.addActionListener(this);
		b3.addActionListener(this);
		b4.addActionListener(this);
		b5.addActionListener(this);
		b6.addActionListener(this);
		
	}
	public void actionPerformed(ActionEvent e){
		String s1;
		String s2;
		String s3;
		String s4;
		String sa1,sa2,sb1,sb2,sc1,sc2;
		if(e.getSource()==b1)
		{
			sa1="n=";
			sa2="n=";
			text1.setText("");
			text2.setText("");
			rsa.RandA();
			aN=rsa.reAn();
			aE=rsa.reAe();
			aD=rsa.reAd();
			sa1+=aN;
			sa1+=":e=";
			sa1+=aE;
			text1.setText(sa1);
			sa2+=aN;
			sa2+=":d=";
			sa2+=aD;
			text2.setText(sa2);
			
		}
		else if(e.getSource()==b2)
		{
			sb1="n=";
			sb2="n=";
			text3.setText("");
			text4.setText("");
			rsa.RandB();
			bN=rsa.reBn();
			bE=rsa.reBe();
			bD=rsa.reBd();
			sb1+=bN;
			sb1+=":e=";
			sb1+=bE;
			text3.setText(sb1);
			sb2+=bN;
			sb2+=":d=";
			sb2+=bD;
			text4.setText(sb2);
		}
		else if(e.getSource()==b3)
		{
			sc1="n=";
			sc2="n=";
			text5.setText("");
			text6.setText("");
			rsa.RandC();
			cN=rsa.reCn();
			cE=rsa.reCe();
			cD=rsa.reCd();
			sc1+=cN;
			sc1+=":e=";
			sc1+=cE;
			text5.setText(sc1);
			sc2+=cN;
			sc2+=":d=";
			sc2+=cD;
			text6.setText(sc2);
		}
		else if(e.getSource()==b4){
			char ch[]=new char[987654];
			int pos[]=new int[20005];
			int num;
			int count;
			int i,j,k;
			String miwen1="";
			//读入A用户的明文和密钥
			s1=textarea1.getText();//读入加密的明文
			s2=text7.getText();//读入解密的密钥
		    des.Fun(s1,s2);
			miwen=des.returnMiWen();
			mingwen=des.returnMingWen();
			for(i=0;i<miwen.length();i++)
				ch[i]=miwen.charAt(i);
			for(i=0;i<miwen.length();i++)
				if((i+1)%32==0)
				{
				   miwen1+=ch[i];
				   miwen1+='\n';
				}
				else
					miwen1+=ch[i];
			textarea2.setText(miwen1);
			pos[0]=0;//将明文中的换行字符的位置存入pos[]中
			count=0;
			for(i=0;i<s1.length();i++)
			{
				if(s1.charAt(i)=='\n')
				{
					pos[++pos[0]]=count;
					count=0;
				}
				else
					count++;
			}
			num=0;
			for(i=0;i<mingwen.length();i++)
					ch[num++]=mingwen.charAt(i);
			mingwen1="";
			int value=1;
			for(i=0;i<num&&value<=pos[0];)
			{
				for(j=i,k=1;k<=pos[value];j++,k++)
					mingwen1+=ch[j];
				mingwen1+='\n';
				i+=pos[value];
				value++;
			}
		}
		else if(e.getSource()==b5)
		{
			s2=text7.getText();
			//RSA加密
			s3=rsa.Algorithm(s2, aN, aD, bN, bE);
			//RSA解密
			s4=rsa.Algorithm(s3, bN, bD, aN, aE);
			String ans="A的DES密钥为:\n";
			ans+=s2;
			ans+='\n';
			ans+="B用RSA解密得到的DES密钥为:\n";
			ans+=s4;
			ans+='\n';
			JTextArea outArea=new JTextArea(10,20);
			JScrollPane scroll=new JScrollPane(outArea);
			if(s2.equals(s4))
			{
				ans+="显然密钥一样\n";
				ans+="故A的数据是发送给B\nA具有不可抵赖性!";
				outArea.setText(ans);
				JOptionPane.showMessageDialog(null,scroll,"忆玥制作团队",JOptionPane.INFORMATION_MESSAGE);
				textarea3.setText(mingwen1);
			}
			else
			{
				ans+="显然密钥不一样\n";
				ans+="故	A的数据不是发送给B\n";
				outArea.setText(ans);
				JOptionPane.showMessageDialog(null,scroll,"忆玥制作团队",JOptionPane.INFORMATION_MESSAGE);
	
			}
		}
		else if(e.getSource()==b6)
		{
			s2=text7.getText();
            //RSA加密
			s3=rsa.Algorithm(s2, aN, aD, bN, bE);
			//RSA解密
			s4=rsa.Algorithm(s3, cN, cD, aN, aE);
			String ans="A的DES密钥为:\n";
			ans+=s2;
			ans+='\n';
			ans+="C用RSA解密得到的DES密钥为:\n";
			ans+=s4;
			ans+='\n';
			JTextArea outArea=new JTextArea(10,20);
			JScrollPane scroll=new JScrollPane(outArea);
			if(s2.equals(s4))
			{
				ans+="显然密钥一样\n";
				ans+="故我的算法设计错误!\n";
				outArea.setText(ans);
				JOptionPane.showMessageDialog(null,scroll,"忆玥制作团队",JOptionPane.INFORMATION_MESSAGE);
			}
			else
			{
				ans+="显然密钥不一样\n";
				ans+="故我的算法设计正确!\n";
				outArea.setText(ans);
				JOptionPane.showMessageDialog(null,scroll,"忆玥制作团队",JOptionPane.INFORMATION_MESSAGE);
			}
		}
		
	}
	public static void main(String args[]){
		 JFrame.setDefaultLookAndFeelDecorated(true);
		  Font font=new Font("JFrame",Font.PLAIN,14);
		  Enumeration keys=UIManager.getLookAndFeelDefaults().keys();
		  while(keys.hasMoreElements()){
		        Object key=keys.nextElement();
		        if(UIManager.get(key)instanceof Font)
		           UIManager.put(key,font);
		            }
		new Test();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -