?? keypanel.java
字號:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.*;
public class KeyPanel extends JPanel
{
KeyPanel(String str)
{
JLabel label = new JLabel(str);
JTextField fileText = new JTextField(34);
JButton chooseButton = new JButton("隨機產生");
this.add(label);
this.add(fileText);
this.add(chooseButton);
clickAction ca = new clickAction(this);
chooseButton.addActionListener(ca);
}
public String getKey()
{
JTextField jtf = (JTextField)this.getComponent(1);
return jtf.getText();
}
private class clickAction implements ActionListener
{
int b;
private Component cmpt;
clickAction(Component c)
{
cmpt = c;
}
public void actionPerformed(ActionEvent event)
{
if(FileEncrypter.button == null)
JOptionPane.showMessageDialog(null,"請選擇加密方式!","提示",JOptionPane.OK_OPTION);
else
{
if (FileEncrypter.button.getText().equals("替代加密算法"))
{
b=(int)(Math.random()*25)+1;
JPanel jp = (JPanel)cmpt;
JTextField jtf = (JTextField)jp.getComponent(1);
String bytK = Integer.toString(b);
jtf.setText(bytK);
}
else if (FileEncrypter.button.getText().equals("三重DES加密算法"))
{
try
{
KeyGenerator kg = KeyGenerator.getInstance("DES");
kg.init(56);
Key ke = kg.generateKey();
byte[] bytK1 = ke.getEncoded();
ke = kg.generateKey();
byte[] bytK2 = ke.getEncoded();
ke = kg.generateKey();
byte[] bytK3 = ke.getEncoded();
JPanel jp = (JPanel)cmpt;
JTextField jtf = (JTextField)jp.getComponent(1);
jtf.setText(getByteStr(bytK1)+getByteStr(bytK2)+getByteStr(bytK3));
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
}
private String getByteStr(byte[] byt)
{
String strRet = "";
for(int i=0;i<byt.length;i++)
{
strRet += getHexValue((byt[i]&240)/16);
strRet += getHexValue(byt[i]&15);
}
return strRet;
}
private String getHexValue(int s)
{
String sRet=null;
switch (s)
{
case 0: sRet = "0";break;
case 1: sRet = "1";break;
case 2: sRet = "2";break;
case 3: sRet = "3";break;
case 4: sRet = "4";break;
case 5: sRet = "5";break;
case 6: sRet = "6";break;
case 7: sRet = "7";break;
case 8: sRet = "8";break;
case 9: sRet = "9";break;
case 10: sRet = "A";break;
case 11: sRet = "B";break;
case 12: sRet = "C";break;
case 13: sRet = "D";break;
case 14: sRet = "E";break;
case 15: sRet = "F";
}
return sRet;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -