RSA算法C语言代码
《RSA算法C语言代码》由会员分享,可在线阅读,更多相关《RSA算法C语言代码(4页珍藏版)》请在装配图网上搜索。
1、.#include #include #include #include #include char s100,*c;int n,e,d,i,C,j,k=0,len;int str100,b30;unsigned gcd(unsigned a, unsigned b )if(a%b=0)return b;elsereturn gcd(b,a%b);void Egcd(int a, int b,int &x, int &y)/ax-by=1if(b=0|a=0)x=1;y=0;return ;if(ab)Egcd(a,b%a,x,y);x=(int)(b*y+1)/a;elseEgcd(a%b,
2、b,x,y);y=(int)(a*x-1)/b;void RSA()int p,q,N,Y;printf(请输入素数 p和 q:);scanf(%d %d,&p,&q);n=p*q;1 / 4.N=(p-1)*(q-1);/printf(n=%d N=%dn,n,N);srand( (unsigned)time( NULL ) );/初始化随机数while(1)/产生随机整数 e, e与N互质e=rand()%N;/ printf(e=%dn,e);if(e=0)continue;if(gcd(N,e)=1)break;/printf(e=%dn,e);Egcd(e,N,d,Y);/ prin
3、tf(d=%d Y=%dn,d,Y);printf(公钥 PU=e=%d,n=%dn,e,n);printf(私钥 PR=d=%d,n=%dn,d,n);void encrypt()/加密函数len=strlen(s);/hgprintf(len=%dn,len);for(i=0;ilen;i+)/去掉 s100中的空格if(si122)bk=i;k+;for(j=i;jlen-1;j+)sj=sj+1;len-;slen=0; /结束符printf(密文是: );for(i=0;ilen;i+)2 / 4.C=1;/printf(shiji=%dn,si-97);for(int j=0;je
4、;j+)C=(C*(si-97)%n;/ printf(C=%ldn,C);stri=C;printf(%d ,stri);printf(n);void decrypt()/解密函数c=(char*)malloc(len*sizeof(int);for(i=0;ilen;i+)/实现解密C=1;for(int j=0;jd;j+)C=(C*(stri)%n;/ printf(C=%ldn,C);/ printf(C=%dn,C);ci=C+97;ci = 0;/ puts(c);for(int z=0;zk;z+)/加空格for(i=0; ii;j-)cj=cj-1;ci= ;len+;bz+
5、1=bz+1+(z+1);break;3 / 4.clen = 0;printf(明文: );puts(c);int function()/系统功能选择页面int choice;printf(=n);printf(欢迎进入 RSA算法n);printf(1-加密n);printf(2-解密n);printf(3-退出n);printf(=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;elseprintf(输入有误,请重新输入!/n);return 0;4 / 4
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。