📄 security.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 + -