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

📄 alogrithm.java

📁 playfair加密简单实现 生成密钥矩阵,加密解密
💻 JAVA
字号:
package playFair;

import java.util.*;
public class Alogrithm {
	private char [][] matrix = new char[5][5];
	private String text;
	Vector Oringin = new Vector();
	Vector Modify = new Vector();
	Alogrithm(String text,char[][]m){
		this.matrix = m;
		this.text=text;
/*		System.out.print(text);
		for(int i=0;i<matrix.length;i++)
			for(int j=0;j<matrix[i].length;j++)
				System.out.print(matrix[i][j]);
	*/}
	
	 public void changeText()
	    {
	        char [] tmp=text.toCharArray();
	        char[]temp=new char[2];
	        int i=0;
	        while(i<tmp.length)
	        {
	        	
	            if(i+1<tmp.length&&tmp[i]==tmp[i+1])
	            {
	                temp[0]=tmp[i];
	                temp[1]='x';
	                this.Oringin.add(temp[0]);
	                this.Oringin.add(temp[1]);
	                i=i+1;
	            }
	            else
	            {
	                 temp[0]=tmp[i];
	                 if(i+1<tmp.length)
	                     temp[1]=tmp[i+1];
	                 else 
	                    temp[1]='x';
	                 this.Oringin.add(temp[0]);
	                 this.Oringin.add(temp[1]);
	                 i=i+2;
	                  
	            }  
	        	
	        }
	    }
	public void Encryption(){

		for(int i=0;i<Oringin.size()-1;i=i+2)
        {
            char []temp=new char[2];
            char [] s1=this.Oringin.elementAt(i).toString().toCharArray();
            char [] s2=this.Oringin.elementAt(i+1).toString().toCharArray();
            temp[0]=s1[0];
            temp[1]=s2[0];
            int x0=0,x1=0,y0=0,y1=0;
            if(temp[0]=='q')
                temp[0]='i';
            if(temp[1]=='q')
                temp[1]='i';
            for(int j=0;j<matrix.length;j++)
            {   for(int k=0;k<matrix[j].length;k++)
                {
            		
                    if(temp[0]==matrix[j][k])
                    {
                        x0=j;
                        y0=k;
                    }
                    if(temp[1]==matrix[j][k])
                    {
                        x1=j;
                        y1=k;
                    }
                }
            }
            if(y0==y1)
            {
                if(x0<matrix.length-1)
                {
                    x0=x0+1;
                }
                else
                {
                    x0=0;
                }
                if(x1<matrix.length-1)
                {
                    x1=x1+1;
                }
                else
                {
                     x1=0;
                } 
                temp[0]=matrix[x0][y0];
                temp[1]=matrix[x1][y1];
                
            }
            else if(x0==x1)
            {
                if(y0<matrix.length-1)
                {
                    y0=y0+1;
                }
                else
                    y0=0;
                if(y1<matrix.length-1)
                {
                    y1=y1+1;
                }
                else
                    y1=0;
                temp[0]=matrix[x0][y0];
                temp[1]=matrix[x1][y1];
            }
            else
            {
                temp[0]=matrix[x1][y0];
                temp[1]=matrix[x0][y1];
            }
            Modify.add(temp[0]);
            Modify.add(temp[1]);
           
        }
	}
	public void Decryption(){
		 for(int i=0;i<Oringin.size()-1;i=i+2)
	        {
	            char []temp=new char[2];
	            char [] s1=this.Oringin.elementAt(i).toString().toCharArray();
	            char [] s2=this.Oringin.elementAt(i+1).toString().toCharArray();
	            temp[0]=s1[0];
	            temp[1]=s2[0];
	            int x0=0,x1=0,y0=0,y1=0;
	            if(temp[0]=='q')
	                temp[0]='i';
	            if(temp[1]=='q')
	                temp[1]='i';
	            for(int j=0;j<matrix.length;j++)
	            {   for(int k=0;k<matrix[j].length;k++)
	                {
	                    if(temp[0]==matrix[j][k])
	                    {
	                        x0=j;
	                        y0=k;
	                    }
	                    if(temp[1]==matrix[j][k])
	                    {
	                        x1=j;
	                        y1=k;
	                    }
	                }
	            }
	            if(y0==y1)
	            {
	                if(x0>0)
	                {
	                    x0=x0-1;
	                }
	                else
	                {
	                    x0=4;
	                }
	                if(x1>0)
	                {
	                    x1=x1-1;
	                }
	                else
	                {
	                     x1=4;
	                } 
	                temp[0]=matrix[x0][y0];
	                temp[1]=matrix[x1][y1];
	                
	            }
	            else if(x0==x1)
	            {
	                if(y0>0)
	                {
	                    y0=y0-1;
	                }
	                else
	                    y0=4;
	                if(y1>0)
	                {
	                    y1=y1-1;
	                }
	                else
	                    y1=4;
	                temp[0]=matrix[x0][y0];
	                temp[1]=matrix[x1][y1];
	            }
	            else
	            {
	                temp[0]=matrix[x1][y0];
	                temp[1]=matrix[x0][y1];
	            }
	            Modify.add(temp[0]);
	            Modify.add(temp[1]);
	        }
	}
	 public String getCiphertext()
	    {
	        int num=0;
	        String dec="";
	        while(num<Modify.size()-1)
	        {
	            String ss=Modify.elementAt(num).toString()+Modify.elementAt(num+1).toString();
	            dec=dec+ss;
	            num=num+2;
	        }
	        return dec;
	        
	    }
	 public String getPlaintext()
	    {
	        int num=0;
	        String dec="";
	        while(num<Modify.size()-1)
	        {
	            if(num<Modify.size()-2&&
	            		Modify.elementAt(num).toString().equals(Modify.elementAt(num+2).toString())
	                    &&Modify.elementAt(num+1).toString().equals("x"))
	            {
	                String ss=Modify.elementAt(num).toString();
	                dec=dec+ss;
	            }   
	            else if(num+1==Modify.size()-1&&Modify.elementAt(num+1).toString().equals("x"))
	            {
	                 String ss=Modify.elementAt(num).toString();
	                 dec=dec+ss;
	            }
	            else
	            {
	                 String ss=Modify.elementAt(num).toString()+Modify.elementAt(num+1).toString();
	                 dec=dec+ss;
	            }
	            num=num+2;
	        }
	        return dec;
	    }

}

⌨️ 快捷键说明

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