java 的DES加密问题,请大家解决一下,就是输出密文只有15位,还有帮我修改一下代码,可以达到每轮输出,谢谢好心的人了啊。
java 的DES加密问题,请大家解决一下,就是输出密文只有15位,还有帮我修改一下代码,可以达到每轮输出,谢谢好心的人了啊。
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;[size=10px]
class myframe extends JFrame implements ActionListener{
JTextArea input;
JTextArea miyue;
JTextArea output;
JLabel l1,l2,l3;
JButton b1,b2;
JPanel p1,p2,p3,p4;
JScrollPane sp1,sp2,sp3;
//
//
int[] ip={
58,50,42,34,26,18,10,2,
60,52,44,36,28,20,12,4,
62,54,46,38,30,22,14,6,
64,56,48,40,32,24,16,8,
57,49,41,33,25,17, 9,1,
59,51,43,35,27,19,11,3,
61,53,45,37,29,21,13,5,
63,55,47,39,31,23,15,7
};
int[] reip={
40, 8, 48, 16, 56, 24, 64, 32,
39, 7, 47, 15, 55, 23, 63, 31,
38, 6, 46, 14, 54, 22, 62, 30,
37, 5, 45, 13, 53, 21, 61, 29,
36, 4, 44, 12, 52, 20, 60, 28,
35, 3, 43, 11, 51, 19, 59, 27,
34, 2, 42, 10, 50, 18, 58, 26,
33, 1, 41, 9, 49, 17, 57, 25
};
int[] e={
32, 1, 2, 3, 4, 5,
4, 5, 6, 7, 8, 9,
8, 9, 10, 11, 12, 13,
12, 13, 14, 15, 16, 17,
16, 17, 18, 19, 20, 21,
20, 21, 22, 23, 24, 25,
24, 25, 26, 27, 28, 29,
28, 29, 30, 31, 32, 1
};
int[] p={
16, 7, 20, 21, 29, 12, 28, 17,
1, 15, 23, 26, 5, 18, 31, 10,
2, 8, 24, 14, 32, 27, 3, 9,
19, 13, 30, 6, 22, 11, 4, 25
};
int[] zhihuanc={
57,49,41,33,25,17, 9,
1,58,50,42,34,26,18,
10, 2,59,51,43,35,27,
19,11, 3,60,52,44,36
};
int[] zhihuand={
63,55,47,39,31,23,15,
7,62,54,46,38,30,22,
14, 6,61,53,45,37,29,
21,13, 5,28,20,12, 4
};
int[] zhihuan2={
14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10,
23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2,
41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48,
44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32
};
int[] S1={
14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7,
0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8,
4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0,
15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13
};
int[] S2={
15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10,
3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5,
0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15,
13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9
};
int[] S3={
10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8,
13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1,
13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7,
1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12
};
int[] S4={
7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15,
13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9,
10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4,
3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14
};
int[] S5={
2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9,
14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6,
4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14,
11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3
};
int[] S6={
12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11,
10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8,
9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6,
4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13
};
int[] S7={
4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1,
13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6,
1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2,
6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12
};
int[] S8={
13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7,
1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2,
7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8,
2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11
};
public myframe(String s){
super(s);
input=new JTextArea();
miyue=new JTextArea();
output=new JTextArea();
l1=new JLabel("输入");
l2=new JLabel("密钥");
l3=new JLabel("输出");
b1=new JButton("加密");
b2=new JButton("解密");
p1=(JPanel)this.getContentPane();
p2=new JPanel();
p3=new JPanel();
p4=new JPanel();
sp1=new JScrollPane(input);
sp2=new JScrollPane(miyue);
sp3=new JScrollPane(output);
b1.addActionListener(this);
b2.addActionListener(this);
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
b1.setSize(30, 50);
b2.setSize(30, 50);
p2.setLayout(new GridLayout(2,1));
p2.add(b1);
p2.add(b2);
p3.setLayout(new GridLayout(3,1));
p3.add(l1);
p3.add(l2);
p3.add(l3);
p4.setLayout(new GridLayout(3,1));
p4.add(sp1);
p4.add(sp2);
p4.add(sp3);
p1.setLayout(new GridLayout(1,5));
p1.add(p2);
p1.add(p3);
p1.add(p4);
this.setBounds(10, 10, 400, 200);
output.setEditable(false);
this.setVisible(true);
this.validate();
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==b1){//加密
int length=input.getText().length();
int length2=miyue.getText().length();
boolean flag=true;
boolean flag2=true;
char[] temp=input.getText().toCharArray();
char[] temp2=miyue.getText().toCharArray();
for(int i=0;i<temp.length && flag==true;i++){
if((temp[i]>=48 && temp[i]<=57) || (temp[i]>=65 && temp[i]<=70) ||(temp[i]>=97 && temp[i]<=102))
flag=true;
else flag=false;
}
for(int i=0;i<temp2.length && flag2==true;i++){
if((temp2[i]>=48 && temp2[i]<=57) || (temp2[i]>=65 && temp2[i]<=70) ||(temp2[i]>=97 && temp2[i]<=102))
flag2=true;
else flag2=false;
}
if(length==16 && flag==true && flag2==true && length2==16){
encrypt();
}
else JOptionPane.showMessageDialog(null, "请输入16位16进制明文或密文或密钥!",
"错误提示",JOptionPane.ERROR_MESSAGE);
}
else if(e.getSource()==b2){ //解密
int length=input.getText().length();
int length2=miyue.getText().length();
boolean flag=true;
char[] temp=input.getText().toCharArray();
for(int i=0;i<temp.length && flag;i++){
if((temp[i]>=48 && temp[i]<=57) || (temp[i]>=65 && temp[i]<=90) ||(temp[i]>=97 && temp[i]<=122))
flag=true;
else flag=false;
}
if(length==16 && flag && length2==16){
decrypt();
}
else JOptionPane.showMessageDialog(null, "请输入16位16进制明文或密文或密钥!",
"错误提示",JOptionPane.ERROR_MESSAGE);
}
}
这只是代码上半部分由于受字数限制,下半部分在第一个回复帖子中,敬请谅解。