C语言实现 RSA的简单加密解密
完整版可以查看我的另一篇文章:【完整版】C语言实现RSA的加解密
RSA我就不普及了,网上都有,现在用我的实验报告实现一下:
需要的数据有:
两个大素数p,q;
n=pq;
t=(p-1)(q-1);
公钥e满足(e,t)=1;
私钥d满足de==1(mod n);
加密公式c=m^e(mod n),c是密文,m是明文;
加密的时候注意明文m<n;
下面再展示一下代码块:
//判断两个数是不是互素。
void gcd(int p,int q){
int temp1,temp2; //q=temp2*p+temp1 ;
if(q<p){
temp1=p;
p=q;
q=temp1;
}
temp1=q%p,temp2=q/p;
while(temp1!=0){
q=p;p=temp1;
temp1=q%p;temp2=q/p;
}
if(temp1==0&&temp2==q){
printf("符合条件!\n");
}
else{
printf("不符合条件!\n");
}
}
//求e关于模(p-1)(q-1)的逆元d:即私钥
int extend(int e,int t){
int d;
for(d=0;d<t;d++){
if(e*d%t==1)
return d;
}
}
加密函数中要把符号明文转换成数字明文才可以加密,加密原理是依次把一个个字母对应的ascii码加密