?? playfair加密解密算法.cpp
字號(hào):
#include <iostream>
#include <cstring>
using namespace std;
void main()
{
m1: cout<<"加密請(qǐng)輸入1,解密請(qǐng)輸入2:";
int c;
cin>>c;
int m1,m2,n1,n2;
char a[5][5];
char i[100];
cout<<"input miyao:"<<endl;
int m,n,j,h;
char b[25];
cin>>b;
h=0;
for(j=0;j<=24;j++)
{
if(b[j]<0) {b[j-1]='a';}
}
b[24]='a';
for(m=0;m<=24;m++)
{
for(j=1;j<=24;j++)
{
for(int l=0;l<j;l++)
{
if(b[j]==b[l]|(b[j]=='i'&&b[l]=='j')|(b[j]=='j'&&b[l]=='i'))
{
for(int k=j;k<25;k++)
{
b[k]=b[k+1];
}
for(int g=0;g<=23;g++)
{
if(b[g]=='a'+h)
{
h++;
}
}
b[24]='a'+h;
}
}
}
}
for(m=0;m<=4;m++)
{
for(n=0;n<=4;n++)
{
a[m][n]=b[5*m+n];
}
}
for(m=0;m<=4;m++)
{
for(n=0;n<=4;n++)
{
cout<<a[m][n];
}
}
cout<<endl;
cout<<"Input 偶數(shù)位密文/明文:"<<endl;
cin>>i;
/********************************************************/
if(c==2)
{
for(j=0;j<50;j++)
{
for(int l=0;l<25;l++)
{
if(b[l]==i[2*j]) {m1=l/5;n1=l%5;}
if(b[l]==i[2*j+1]) {m2=l/5;n2=l%5;}
}
if(m1==m2&&n1==n2) {i[2*j]='t';i[2*j+1]='t';}
else
{
if(n1!=n2&&m1!=m2)
{
i[2*j]=a[m1][n2];i[2*j+1]=a[m2][n1];
}
else{
if(m1==m2)
{
if(n1==0) n1=5;
if(n2==0) n2=5;
i[2*j]=a[m1][n1-1];i[2*j+1]=a[m2][n2-1];
}
if(n1==n2)
{
if(m1==0) m1=5;
if(m2==0) m2=5;
i[2*j]=a[m1-1][n1];i[2*j+1]=a[m2-1][n2];
}
}
}
}
cout<<"output mingwen:"<<endl;
for(j=0;j<100;j++) cout<<i[j]<<endl;
}
/********************************************************************/
else if(c==1)
{
for(j=0;j<50;j++)
{
for(int l=0;l<25;l++)
{
if(b[l]==i[2*j]) {m1=l/5;n1=l%5;}
if(b[l]==i[2*j+1]) {m2=l/5;n2=l%5;}
}
if(m1==m2&&n1==n2) {i[2*j]='t';i[2*j+1]='t';}
else
{
if(n1!=n2&&m1!=m2)
{
i[2*j]=a[m1][n2];i[2*j+1]=a[m2][n1];
}
else{
if(m1==m2)
{
if(n1==5) n1=0;
if(n2==5) n2=0;
i[2*j]=a[m1][n1+1];i[2*j+1]=a[m2][n2+1];
}
if(n1==n2)
{
if(m1==5) m1=0;
if(m2==5) m2=0;
i[2*j]=a[m1+1][n1];i[2*j+1]=a[m2+1][n2];
}
}
}
}
cout<<"output miwen:"<<endl;
for(j=0;j<100;j++) cout<<i[j];
cout<<endl;
}
else goto m1;
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -