📄 alogrithm.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 + -