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

📄 2.cpp

📁 密码学里面要用到的简单的playfair加密解密代码
💻 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 + -