📄 2.cpp
字号:
#include<iostream>
using namespace std;
void main()
{
int t;
char *b=new char;
char *bb=new char;
cout<<"请输入密钥 key"<<endl;
cin>>b;
cout<<endl;
bb[0]=b[0];
for(int i=1,k=1;b[i]!=NULL;i++)
{for(int j=0;j<i;j++)
{
if(b[i]==b[j])t=1;
}
if(t!=1){bb[k]=b[i];k++;}
t=0;
if(b[i+1]==NULL)bb[k]=NULL;
}
cout<<"密钥词为: "<<endl;
for(int i=0;bb[i]!=NULL;i++)
cout<<bb[i];
cout<<endl;
cout<<endl;
for(int comp=0;bb[comp]!=NULL;comp=comp+2)
{
if(bb[comp]==bb[comp+1])bb[comp+1]='A';
}
int temp_int=65;
char a[5][5];
int i,j,k=0;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{
if(bb[k]!=NULL)
{ a[i][j]=bb[k];
k++;
}
else {
int k2=0;
char temp_ch=temp_int;
for(int k1=0;bb[k1]!=NULL;k1++)
{
if(bb[k1]==temp_ch)
k2=1;
if(k2==0&&bb[k1+1]==NULL)
a[i][j]=temp_ch;
if(temp_int==73)temp_int++;
}
if(k2==1){
if(j==0){i--;j=4;}
else j--;}
temp_int++;
}
}
cout<<"密钥词填充后的表为: "<<endl;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
cout<<a[i][j];
cout<<endl;
cout<<endl;
cout<<"请输入密文: "<<endl;
char *out=new char;
cin>>out;
if(strlen(out)%2==1)strcat(out,"A");
cout<<endl;
cout<<"明文为: "<<endl;
int i1,i2,j1,j2;
for(int t=0;out[t]!=NULL;t=t+2)
{for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(a[i][j]==out[t]){i1=i;j1=j;};
for(i=0;i<5;i++)
for(j=0;j<5;j++)
if(a[i][j]==out[t+1]){i2=i;j2=j;};
if(i1==i2&&j1==j2)cout<<a[i1][j1]<<a[i2][j2];
else {
if(i1==i2)
{if(j1==0)cout<<a[i1][4]<<a[i2][j2-1];
else if(j2==0)cout<<a[i1][j1-1]<<a[i2][4];
else cout<<a[i1][j1-1]<<a[i2][j2-1];
}
if(j1==j2)
{if(i1==0)cout<<a[4][j1]<<a[i2-1][j2];
else if(i2==0)cout<<a[i1-1][j1]<<a[4][j2];
else cout<<a[i1-1][j1]<<a[i2-1][j2];
}
if(i1!=i2&&j1!=j2)cout<<a[i1][j2]<<a[i2][j1];
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -