1、include
#include
#include
#include
#include
char s[100],*c;
int n,e,d,i,C,j,k=0,len;
int str[100],b[30];
unsigned gcd(unsigned a, unsigned b )
{
if(a%b==0)
return b;
else
return gcd(b,a%b);
}
void Egcd(int a,
2、 int b,int &x, int &y)
{ //ax-by=1
if(b==0||a==0)
{
x=1;
y=0;
return ;
}
if(a
3、"请输入素数p和q:");
scanf("%d %d",&p,&q);
n=p*q;
N=(p-1)*(q-1);
//printf("n=%d N=%d\n",n,N);
srand( (unsigned)time( NULL ) ); //初始化随机数
while(1) //产生随机整数e,e与N互质
{
e=rand()%N;
// printf("e==%d\n",e);
if(e==0)
continue;
4、 if(gcd(N,e)==1)
{
break;
}
}
//printf("e=%d\n",e);
Egcd(e,N,d,Y);
// printf("d=%d Y=%d\n",d,Y);
printf("公钥PU={e=%d,n=%d}\n",e,n);
printf("私钥PR={d=%d,n=%d}\n",d,n);
}
void encrypt() //加密函数
{
len=strlen(s);
//hgprintf("len=%d\n",len);
for(i=0;i<
5、len;i++) //去掉s[100]中的空格
{
if(s[i]<97||s[i]>122)
{
b[k]=i;
k++;
for(j=i;j6、[i]-97);
for(int j=0;j7、 j=0;ji;j--)
{
8、c[j]=c[j-1];
}
c[i]=' ';
len++;
b[z+1]=b[z+1]+(z+1);
break;
}
}
}
c[len] = '\0';
printf("明文:");
puts(c);
}
int function()//系统功能选择页面
{
int choice;
printf("==============================================================\n");
printf("
9、 欢迎进入RSA算法 \n");
printf(" 1--加密 \n");
printf(" 2--解密 \n");
printf(" 3--退出 \n");
printf("=============
10、\n");
printf("请输入要选择的功能号:");
scanf("%d",&choice);
return choice;
}
int main()
{
int function();
int fc;
printf("请输入初始明文(小写):");
gets(s);
// puts(s);
RSA(); //提供私钥和公钥
while(1)
{
fc=function();
if(fc==1) //加密
encrypt();
else if(fc==2) //解密
decrypt() ;
else if(fc==3)
break;
else
printf("输入有误,请重新输入!/n");
}
return 0;
}