?? playfair.cpp
字號:
#include<stdio.h>
#include<string.h>
struct coordinate
{
int x;
int y;
};
char ming[100000],mi[100000];
char a[5][6]={{'c','i','p','h','e'},{'r','a','b','d','f'},{'g','k','l','m','n'},
{'o','q','s','t','u'},{'v','w','x','y','z'}};
void encode()
{
int len,i,j,k,flag;
coordinate t1,t2,t3,t4;
len=strlen(ming);
for(i=0;i<len;)
{
if(ming[i]<65){mi[i]=ming[i];i++;continue;}
flag=0;
for(j=0;j<5;j++)
for(k=0;k<5;k++)
{
if(flag==2)goto loop;
if(a[j][k]==ming[i])
{
t1.x=j;
t1.y=k;
flag++;
}
else if(a[j][k]==ming[i+1])
{
t2.x=j;
t2.y=k;
flag++;
}
}
loop:;
if(t1.x==t2.x)
{
t3.y=(t1.y+1)%5;
t4.y=(t2.y+1)%5;
t3.x=t2.x;
t4.x=t2.x;
}
else if(t1.y==t2.y)
{
t3.x=(t1.x+1)%5;
t4.x=(t2.x+1)%5;
t3.y=t2.y;
t4.y=t2.y;
}
else
{
t4.x=t1.x;
t4.y=t2.y;
t3.x=t2.x;
t3.y=t1.y;
}
mi[i]=a[t3.x][t3.y];
mi[i+1]=a[t4.x][t4.y];
i+=2;
}//for
printf("%s\n",mi);
}
void decode()
{
int len,i,j,k,flag;
coordinate t1,t2,t3,t4;
len=strlen(mi);
for(i=0;i<len;)
{
if(mi[i]<65){ming[i]=mi[i];i++;continue;}
flag=0;
for(j=0;j<5;j++)
for(k=0;k<5;k++)
{
if(flag==2)goto loop;
if(a[j][k]==mi[i])
{
t1.x=j;
t1.y=k;
flag++;
}
else if(a[j][k]==mi[i+1])
{
t2.x=j;
t2.y=k;
flag++;
}
}
loop:;
if(t1.x==t2.x)
{
t3.y=(t1.y-1+5)%5;
t4.y=(t2.y-1+5)%5;
t3.x=t2.x;
t4.x=t2.x;
}
else if(t1.y==t2.y)
{
t3.x=(t1.x-1+5)%5;
t4.x=(t2.x-1+5)%5;
t3.y=t2.y;
t4.y=t2.y;
}
else
{
t4.x=t1.x;
t4.y=t2.y;
t3.x=t2.x;
t3.y=t1.y;
}
ming[i]=a[t3.x][t3.y];
ming[i+1]=a[t4.x][t4.y];
i+=2;
}//for
printf("%s\n",ming);
}
main()
{
//coordinate t1,t2,t3,t4;
int n,i,j,k,len,flag,pp;
for(i=0;i<5;i++)printf("%s\n",a[i]);
while(1)
{
printf("歡迎您進入本系統!本系統具有的功能為加密和解密!\n");
printf("選擇1:加密;\n");
printf("選擇2:解密;\n");
printf("選擇0:退出系統;\n");
printf("請您選擇!\n");
memset(ming,0,100000);
memset(mi,0,100000);
scanf("%d",&pp);
if(pp==0)break;
else if(pp==1)
{
printf("請輸入明文\n");
scanf("%s",ming);
encode();
}
else if(pp==2)
{
printf("請輸入密文\n");
scanf("%s",mi);
decode();
}
else printf("選擇有誤,請重新認真選擇!\n");
}//while
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -