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

📄 vigenere.java

📁 常用加密解密算法
💻 JAVA
字号:
import javax.swing.*;
import java.awt.event.*;
public class Vigenere
{ JButton a,b;
	public JTextField t1,t2,t3,t4;
	GDFrame ks;
	String k;
	public Vigenere()
	{
	 ks=new GDFrame("Vigenere密码");
	 ks.show();
   a=ks.getB1();
   b=ks.getB2();
   a.addActionListener(new Ca());	
   b.addActionListener(new Cb());		

	 t1=ks.getT1();
	 t2=ks.getT2();
	 t3=ks.getT3();
	 t4=ks.getT4();
	}

class Ca implements ActionListener{
	public void actionPerformed(ActionEvent e)
	{
	 String m,c;
	 char s1[]=new char[26],t,cc[]=new char[50];
	 int lenm,lenk,posm[]=new int[50],posk[]=new int[50],posc[]=new int[50];  //lenm,lenk为明文和密钥长度,posm[]\posk[]\posc分别存放明文、密钥、密文位置序列                   //存放明文和密钥长度  
	 for(int i=0;i<=25;i++)             //存放26个字母原序
	    {s1[i]=(char)(97+i);
	    }
	 m=t1.getText();                  //文本1里面的字符串,明文
	 k=t2.getText();                  //密钥输入的字符串
	 lenm=m.length(); 
   lenk=k.length(); 
   for(int i=0;i<lenm;i++)
      {t=m.charAt(i);
       for(int j=0;j<26;j++)
           if(t==s1[j])
           	  posm[i]=j;
       }
   for(int i=0;i<lenk;i++)
      {t=k.charAt(i);
       for(int j=0;j<26;j++)
           if(t==s1[j])
           	  posk[i]=j;
       }        
   for(int i=0;i<lenm;i++)    	  	
       posc[i]=(posm[i]+posk[i%lenk])%26;
   for(int i=0;i<lenm;i++)   
      cc[i]=s1[posc[i]];
   c=new String(cc,0,lenm);
   t3.setText(c);   
 	}
}	
class Cb implements ActionListener{
	public void actionPerformed(ActionEvent e)
	{
	 String m,c;
	 char s1[]=new char[26],t,mm[]=new char[50];
	 int lenc,lenk,posm[]=new int[50],posk[]=new int[50],posc[]=new int[50];  //lenm,lenk为明文和密钥长度,posm[]\posk[]\posc分别存放明文、密钥、密文位置序列                   //存放明文和密钥长度  
	 for(int i=0;i<=25;i++)             //存放26个字母原序
	    {s1[i]=(char)(97+i);
	    }
	 c=t3.getText(); 
	 lenc=c.length();                 //得到密文长度
	 lenk=k.length();                  //密钥长度
	 for(int i=0;i<lenc;i++)
      {t=c.charAt(i);
       for(int j=0;j<26;j++)
           if(t==s1[j])
           	  posc[i]=j;
       }
   for(int i=0;i<lenk;i++)
      {t=k.charAt(i);
       for(int j=0;j<26;j++)
           if(t==s1[j])
           	  posk[i]=j;
       }        
   for(int i=0;i<lenc;i++)    	  	
       posm[i]=(posc[i]-posk[i%lenk]+26)%26;
   for(int i=0;i<lenc;i++)   
      mm[i]=s1[posm[i]];
  m=new String(mm,0,lenc);
   t4.setText(m);  
	 
    }
  } 	

}	

⌨️ 快捷键说明

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