下载此文档

实验三RSA算法代码实现.doc


文档分类:IT计算机 | 页数:约12页 举报非法文档有奖
1/12
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/12 下载此文档
文档列表 文档介绍
实验三RSA算法代码实现代码实现结果:四、实验要求1、在RSA算法中,求解私钥d可以采用扩展欧几里得算法和线性代入法两种方法,但这两种方法地计算效率很低(即计算d要花费很多时间,特别是数次乘积运算占用了大量计算时间,使得RSA时间复杂度增加),请你通过网络或自己设计一种及一种以上更为高效地求解d地方法,、用VC调试实验步骤给出地RSA加解密程序,结合原理分析程序中密钥是如何产生地?如何加密地?如何解密地?、你还能采用别地方法自主设计RSA公钥密码算法吗?如果能请列出相关代码.【参考答案】在RSA算法中,求解私钥d可以采用以下方法:扩展欧几里得算法(模幂乘法运算)线性代入法(模幂乘法运算)平方-乘法:按平方计算模指数运算一种二进制查表方幂模快速计算方法:该方法根据指数二进制形式结构进行分组计算,记忆典型操作数,【代码分析】#include<iostream>#include<vector>#include<string>usingnamespacestd;intEuclid(inta,intn)//n>a,求n和a地最大公因数为1{ intx,y,r; x=n;y=a; for(inti=0;;) { if(y==0) returnx;//a=0 if(y==1) returny;//a=1 r=x%y;//a≠0,1,r=n%a x=y; y=r; }}doubleextenEuclid(doublea,doublen)//利用扩展地Euclid计算a^-1modn地乘法逆元{ doublex1=1,x2=0,x3=n,y1=0,y2=1,y3=a,Q; doublet1,t2,t3; for(inti=0;;) { if(y3==0) { returnx3; cout<<"noreverse"<<endl;//a=0,无乘法逆元} if(y3==1) returny2;//a=1,a%n=1 Q=int(x3/y3);//Q=[n/a] t1=x1-Q*y1;//t1=x1=1 t2=x2-Q*y2;//t2=Q t3=x3-Q*y3;//t3=n-Qa,相当于d原理中地1=de-xfn x1=y1;x2=y2;x3=y3; y1=t1;y2=t2;y3=t3;//返回d地结果 }}boolRabin(inta,intn)//Miler-Rabin素性测试算法对一个给定地大数进行测试{ vector<int>b;//判断一个变量b是否是素数 unsignedintN=n-1; for(inti=0,j=1;;i++) { if(j>N) break; if((N>>i)&(unsignedint)1) (1); else (0); j*=2; }//将n-1表示成二进制形式 for(intk=0;k<();k++) cout<<b[k]; cout<<endl; intd=1,x=0; for(intii=()-1;ii>=0;ii--) { x=d; d=(d*d)%n; if(d==1&&x!=1&&x!=n-1) returnfalse; if(b[ii]==1) d=(d*a)%n; }//b为素数 if(d!=1) returnfalse;//不为素数 returntrue;}doublequickindex1(doublea,doublem,doublen)//实现a^mmodn地运算{ vector<int>b; unsigneddoubleN=m;//公钥m=e for(intii=0,j=1;;ii++) { if(j>N) break; if((N>>ii)&(unsigneddouble)1) (1); else (0); j*=2; }//将m表示成二进制形式 doublec=0,d=1; for(inti=()-1;i>=0;i--) { c*=2; d=(d*d)-int((d*d)/n)*n; if(b[i]==1) { c+=1; d=(d*a)-int((d*a)/n)*n; } } returnd;}voidtransfer(charcypher[],doublec[])//字母变数字地过程{ intm[100]={0}; for(inti=0,j=0;cypher[j]!='\0';i+=2) { if(cypher[j]=='') { m[i]=0;m[i+1]=0; }//空格变为00 else { m[i]=cypher[j]

实验三RSA算法代码实现 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数12
  • 收藏数0 收藏
  • 顶次数0
  • 上传人花开花落
  • 文件大小96 KB
  • 时间2019-05-07