📄 vignere.java
字号:
import java.awt.*;
import java.awt.event.*;
public class Vignere extends Frame implements WindowListener,ActionListener{
/**
* @param args
*/
public Frame f;
public Label inform1,inform2;
public TextField in1,in2;
public TextArea out1;
public TextArea out2;
public Button b1,b2;
public Vignere()
{
f=new Frame("Vignere密码");
f.addWindowListener(this);
f.setLayout(new GridLayout(0,2));
f.setBounds(400, 400, 400, 200);
in1=new TextField();
in2=new TextField();
out1=new TextArea();
out2=new TextArea();
b1=new Button("加密");
b2=new Button("解密");
inform1=new Label("请输入明文或者密文");
inform2=new Label("请输入密钥(小写)");
b1.addActionListener(this);
b2.addActionListener(this);
f.add(inform1);
f.add(in1);
f.add(inform2);
f.add(in2);
f.add(b1);
f.add(out1);
f.add(b2);
f.add(out2);
f.setVisible(true);
}
public static void main(String[] args) {
// TODO 自动生成方法存根
Vignere ex=new Vignere();
ex.addWindowListener(ex);
}
public void windowActivated(WindowEvent e) {
// TODO 自动生成方法存根
}
public void windowClosed(WindowEvent e) {
// TODO 自动生成方法存根
}
public void windowClosing(WindowEvent e) {
// TODO 自动生成方法存根
System.exit(0);
}
public void windowDeactivated(WindowEvent e) {
// TODO 自动生成方法存根
}
public void windowDeiconified(WindowEvent e) {
// TODO 自动生成方法存根
}
public void windowIconified(WindowEvent e) {
// TODO 自动生成方法存根
}
public void windowOpened(WindowEvent e) {
// TODO 自动生成方法存根
}
public void actionPerformed(ActionEvent e) {
// TODO 自动生成方法存根
Object source=e.getSource();
if(source==b1)
{
//out1.setText(in.getText());
this.ja();
}
if(source==b2)
this.je();
}
public void ja() {
String income=in1.getText();
String income2=in2.getText();
StringBuffer c=new StringBuffer();
char ch;
int i,n,k=0;
int [] inc=new int[income2.length()];
for(i=0;i<income2.length();i++) //转换密钥
{
if(96<income2.charAt(i)&&income2.charAt(i)<123)
inc[i]=(int)income2.charAt(i)-97;
else out1.setText("错误密钥");
}
for(i=0;i<income.length();i++)
{
k=k%income2.length();
ch=income.charAt(i);
n=(int)ch;
ch=income.charAt(i);
n=(int)ch;
if(64<n&&n<91)
{
c.append((char)(65+(n-65+inc[k])%26));
k++;
}
else
if(96<n&&n<123)
{
c.append((char)(97+(n-97+inc[k])%26));
k++;
}
else c.append((char)(n));
}
out1.setText(new String(c));
}
public void je() {
String income=in1.getText();
String income2=in2.getText();
StringBuffer c=new StringBuffer();
char ch;
int i,n,k=0;
int [] inc=new int[income2.length()];
for(i=0;i<income2.length();i++) //转换密钥
{
if(96<income2.charAt(i)&&income2.charAt(i)<123)
inc[i]=(int)income2.charAt(i)-97;
else out1.setText("错误密钥");
}
for(i=0;i<income.length();i++)
{
k=k%income2.length();
ch=income.charAt(i);
n=(int)ch;
ch=income.charAt(i);
n=(int)ch;
if(64<n&&n<91)
{
c.append((char)(90-(90+inc[k]-n)%26));
k++;
}
else
if(96<n&&n<123)
{
c.append((char)(122-(122+inc[k]-n)%26));
k++;
}
else c.append((char)(n));
}
out2.setText(new String(c));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -