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

📄 playfair加密解密算法.cpp

📁 包含仿射caser算法
💻 CPP
字号:
#include <iostream>
#include <cstring>
using namespace std;
void main()
{
m1:	cout<<"加密请输入1,解密请输入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 偶数位密文/明文:"<<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;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -