RSA加密(C语言)
侠客行
实现加密,设p=101,q=103,选择e=79,对任意输入的明文实现加密,如果是字符串,分组长度为2。#include<stdio.h>
#include<string.h>int kuaisuqumo(int m,int e,int n)
{
int i,j,t=0,c=1,b[15],len=0;
for(i=0;e!=0;i++)
{
b=e%2;
e=e/2;
len++;
}
for(j=i-1;j>=0;j--)
{
t=2*t;
c=(c*c)%n;
if(b[j]==1)
{
t+=1;
c=(c*m)%n;
}
}
return c;
}main()
{
char m0[1000]={},str;
int i,j,len,length,m,n,n1,d=0,m1[1000];
int p=101,q=103,e=79;
printf("请输入明文:");
i=0;
while((m0=getchar())!=n)
i++;
m0=;
length=strlen(m0);
for(i=0;i<length;i++)
m1=int(m0);n=p*q;
n1=(p-1)*(q-1);
while(d*e%n1!=1)
d++;
printf("公钥(n,e):(%d,%d)n",n,e);
printf("私钥(p,q,d):(%d,%d,%d)n",p,q,d);
len=strlen(m0);if(length%2==1)
{
printf("字符分组为2,请输入添加字符,构成分组:");
scanf("%c",&str);
m1[len]=int(str);
m1[len+1]=;
len+=1;
}
printf("字符换的ASCLL码:n");
for(i=0;i<len;i++)
{
printf("%d ",m1);
}
int c[500],k=0,k1;
printf("n");
printf("加密n");
for(j=0;j<len;j+=2)
{
m=m1[j]*100+m1[j+1];
c[k]=kuaisuqumo(m,e,n);
printf("%d ",c[k]);
k++;
}
printf("n");
printf("解密n");
for(k1=0;k1<k;k1++)
printf("%d ",kuaisuqumo(c[k1],d,n));
printf("n");
}
补充:综合编程 , 安全编程 ,