📄 qqy.cpp
字号:
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <malloc.h>
void main()
{
void jiami();
void jiemi();
jiami();
jiemi();
}
void jiami()
{
char p[100];
int length1;
int gcd(int ,int);
void swap();
int k1,k2;
int i;
printf("请输入要加密的字符串:\n");
scanf("%s",&p);
length1 = strlen(p);
for(i=0;i<3;i++)
{
printf("请输入加密密钥:");
scanf("%d %d",&k1,&k2);
int re2=gcd(k1,26);
if (re2==1)
{
for( i=0;i<length1;i++)
{
if(p[i]>96&&p[i]<123)
p[i]=(k1*(p[i]-97)+k2)%26+65;
else if(p[i]>64&&p[i]<91)
p[i]=(k1*(p[i]-65)+k2)%26+65;
}
printf("加密结果为:%s\n",p);break;
}
else printf("输入的密钥出错!\n");
}
}
void jiemi()
{
char q[50];
int length2;
int gcd(int,int);
void swap();
int Euclid(int,int);
int k1,k2,t,i;
printf("请输入需要解密的字符串:\n");
scanf("%s",&q);
length2=strlen(q);
for(i=0;i<3;i++)
{
printf("请输入解密密钥:");
scanf("%d %d",&k1,&k2);
int result=Euclid(k1,k2);
int re2=gcd(k1,26);
if(re2==1)
{
for(i=0;i<length2;i++)
{
if(q[i]>64&&q[i]<91)
{
t=result*((q[i]-65)-k2);
if(t<0)
q[i]=t%26+26+97;
else
q[i]=t%26+97;
}
}
printf("输出解密结果为:%s\n",q);break;
}
else printf("输入的密钥出错!\n");
}
}
int Euclid (int d,int f)
{
int x[3]={1,0,f};
int y[3]={0,1,d};
int temp[3];
int q;
while (1)
{
if (y[2]==0)
{
return -1;
break;
}
if (y[2]==1)
{
if (y[1]>=0)
{return y[1]%f;break;}
else
{return y[1]%f+f;break;}
}
q=x[2]/y[2];
temp[0]=x[0]-q*y[0];
temp[1]=x[1]-q*y[1];
temp[2]=x[2]-q*y[2];
x[0]=y[0];
x[1]=y[1];
x[2]=y[2];
y[0]=temp[0];
y[1]=temp[1];
y[2]=temp[2];
}
}
void swap(int a,int b)
{
int c=a;
a=b;
b=c;
}
int gcd(int a,int b)
{
if(0==a) return b;
if(0==b) return a;
if(a>b) swap(a,b);
int c;
for(c=a%b;c>0;c=a%b)
{
a=b;
b=c;
}
return b;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -