赞
踩
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码加密;加密函数中的加密公式pow(m,e)%n可能会导致溢出,这是解决之后的:</
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。