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

📄 security.cpp

📁 这是关于用扩展欧几里德算法求乘法逆元然后用仿射密码加密解密的两个算法/
💻 CPP
字号:
#include<stdio.h>
#include<iostream.h>
#include<string.h>
int fun(int d,int f)
{
	int Q,T[3],X[3],Y[3];
	int d1;
	/*printf("求d关于模f的乘法逆元d1:\n");
	printf("\n 请输入逆元值d:");
	scanf("%d",&d);
	printf("\n 请输入模f:");
	scanf("%d",&f);*/
	X[0]=1;
	X[1]=0;
	X[2]=f;
	Y[0]=0;
	Y[1]=1;
	Y[2]=d;
//	printf("Q   X[0]   X[1]  X[2]  Y[0]  Y[1]  Y[2]");
	while(1)
		{
          if (Y[2]==0)
          {
			  printf("d1=null\n");
			  break;
          }
		  else if(Y[2]==1)
		 {
		      d1=Y[1];             
			  break;
		  }
		  else
		  {
          Q=X[2]/Y[2];
		  T[0]=X[0]-Q*Y[0];
          T[1]=X[1]-Q*Y[1];
		  T[2]=X[2]-Q*Y[2];
		  X[0]=Y[0];
		  X[1]=Y[1];
		  X[2]=Y[2];
		  Y[0]=T[0];
		  Y[1]=T[1];
		  Y[2]=T[2];
		  //printf("\n%-5d %-5d %-5d %-5d %-5d %-5d %-5d\n",Q,X[0],X[1],X[2],Y[0],Y[1],Y[2]);
		  continue;
		  }
		}
	if(d1<0)
	{
     d1=d1+f;
	 printf("d1=%d\n",d1);
	}
	return(d1);
}
void main()
{
   int i; 
   int a,a1,b,n;
   char r[1000],s[1000];
   while(1)
   {
   printf("1:加密;2:解密;\n");
   cout<<"输入密钥a,b"<<endl;
   printf("input a:");
   scanf("%d",&a);
   printf("\ninput b:");
   scanf("%d",&b);
   a1=fun(a,26);
   printf("\ninput your choice:");
   scanf("%d",&n);
   switch(n)
   {
   case 1:
	   printf("\n请输入原文:");
	   scanf("%s",&r);
	   printf("\n加密后的密文:");
	   for(i=0;i<strlen(r);i++)
	   {
		   if(r[i]<=123&&r[i]>=97)
		   {
			   s[i]=(a*(r[i]-97)+b)%26+97;
			   printf("%c",s[i]);
		   }
		   else if(r[i]<=91&&r[i]>=65)
           {
			   s[i]=(a*(r[i]-65)+b)%26+65;
			   printf("%c",s[i]);
		   }	   
	   }
	   printf("\n");
       break;
   case 2:
	   printf("\n请输入密文:");
	   scanf("%s",&r);
	   printf("\n解密后的明文:");
	   for(i=0;i<strlen(r);i++)
	   {
		   if(r[i]<=123&&r[i]>=97)
		   {
			   s[i]=((r[i]-97)-b)*a1%26+97;
			   printf("%c",s[i]);
		   }
		   else if(r[i]<=91&&r[i]>=65)
           {
			   s[i]=((r[i]-65)-b)*a1%26+65;
			   printf("%c",s[i]);
		   }	   
	   }
	   printf("\n");
       break;
   default:
	   break;
   }
   }
}










⌨️ 快捷键说明

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