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

📄 playfair.cpp

📁 本程序是一个在Linux FC5环境下写的经典加密程序playfair加密程序。也可以在其他环境中运行。只有文本界面
💻 CPP
字号:
#include <stdio.h>
#include <iostream.h>
#include <stdlib.h>
#include "ctype.h"
#define N 100

int main()
{
	int i,T=0;
	char error,in[10*N];
	printf("Please enter the cypher:\n");
	scanf("%s",in);
	for(i=0;in[i]!='\0';i++)
	{
		in[i]=toupper(in[i]);
		T++;
	}
	for(i=0;in[i]!='\0';i++)
	{
		if(in[i]=='J')
		{
			in[i]='I';
		}
		if(in[i]=='X'&&in[i+1]=='X')
		{
			printf("\nWARNING! Illigle input as double or more series of 'X' occured !\n\n");
			exit(0);
		}
		if(in[i+1]==in[i])
		{
			in[i+1]='X';
			T++;
			for(int j=T+1;j>i+1;j--)
				in[j]=in[j-1];
			in[i+2]=in[i];
		}
	}
	printf("\n\nafter encode,the cryptograph outputs bellow:\n\n");
	char array[5][5]={'Y','U','O','F','A','V','P','G','B','N','Q',
				'H','C','M','T','I','D','L','S','X','E','K','R','W','Z'};
	for(i=0;in[i]!='\0';i=i+2)
	{
		int x1=0,x2=0,y1=0,y2=0;
		if(in[i+1]=='\0')
		{
			in[i+1]='X';
			in[i+2]='\0';
			T++;
			if(in[i]=='X')
			{
				printf("\nWARNING! error occured !\n");
				printf("maybe you inputed the last letter as 'X' & it's ranked as odd\n\n");
				exit(0);
			}
		}
		for(int m=0;m<5;m++)
		{
			for(int n=0;n<5;n++)
			{
				if(in[i]==array[m][n])
				{
					x1=m;
					y1=n;
				}
				else if(in[i+1]==array[m][n])
				{
					x2=m;
					y2=n;
				}
			}
		}
		if((x1==x2)&&(y1!=y2))
		{
			y1=y1+1;
			y2=y2+1;
			if(y1>4)
				y1=0;
			if(y2>4)
				(y2)=0;
		}
		else if((x1!=x2)&&(y1==y2))
		{
			x1=x1+1;
			x2=x2+1;
			if(x1==5)
				x1=0;
			if(x2==5)
				x2=0;
		}
		else
		{
			int temp;
			temp=y1;
			y1=y2;
			y2=temp;
		}
		cout<<array[x1][y1]<<array[x2][y2];
    }
	cout<<endl<<endl;
	return 0;
}

⌨️ 快捷键说明

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