📄 test.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 + -