ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:20.63KB ,
资源ID:17171027      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17171027.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(rsa算法实验心得文档格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

rsa算法实验心得文档格式.docx

1、n=p*q然后随机选择加密密钥e,要求e和(p-1)*(q-1)互质。最后,利用euclid算法计算解密密钥d,满足e*d=1(mod(p-1)*(q-1)其中n和d也要互质。数e和n是公钥,d是私钥。两个素数p和q不再需要,应该丢弃,不要让任何人知道。加密信息m(二进制表示)时,首先把m分成等长数据块m1,m2,.,mi,块长s,其中大。对应的密文是:ci=mie(modn)(a)解密时作如下计算:mi=cid(modn)(b)RsA可用于数字签名,方案是用(a)式签名,(b)式验证。具体操作时考虑到安全性和m信息量较大等因素,一般是先作hAsh运算。RsA的安全性。RsA的安全性依赖于大数

2、分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解RsA就一定需要作大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法。目前,RsA的一些变种算法已被证明等价于大数分解。不管怎样,分解n是最显然的攻击方法。现在,人们已能分解多个十进制位的大素数。因此,模数n必须选大一些,因具体适用情况而定。RsA的速度。由于进行的都是大数计算,使得RsA最快的情况也比Des慢上倍,无论是软件还是硬件实现。速度一直是RsA的缺陷。一般来说只用于少量数据加密。RsA的选择密文攻击。RsA在选择密文攻击面前很脆弱。一般攻击者是将某一信息作一下伪装(blind),让拥有私钥的

3、实体签署。然后,经过计算就可得到它所想要的信息。实际上,攻击利用的都是同一个弱点,即存在这样一个事实:乘幂保留了输入的乘法结构:(xm)d=xd*mdmodn前面已经提到,这个固有的问题来自于公钥密码系统的最有用的特征-每个人都能使用公钥。但从算法上无法解决这一问题,主要措施有两条:一条是采用好的公钥协议,保证工作过程中实体不对其他实体任意产生的信息解密,不对自己一无所知的信息签名;另一条是决不对陌生人送来的随机文档签名,签名时首先使用one-wayhashFunction对文档作hAsh处理,或同时使用不同的签名算法。在中提到了几种不同类型的攻击方法。RsA的公共模数攻击。若系统中共有一个模

4、数,只是不同的人拥有不同的e和d,系统将是危险的。最普遍的情况是同一信息用不同的公钥加密,这些公钥共模而且互质,那末该信息无需私钥就可得到恢复。设p为信息明文,两个加密密钥为e1和e2,公共模数是n,则:c1=pe1modnc2=pe2modn密码分析者知道n、e1、e2、c1和c2,就能得到p。因为e1和e2互质,故用euclidean算法能找到r和s,满足:r*e1+s*e2=1假设r为负数,需再用euclidean算法计算c1(-1),则(c1(-1)(-r)*c2s=pmodn另外,还有其它几种利用公共模数攻击的方法。总之,如果知道给定模数的一对e和d,一是有利于攻击者分解模数,一是有

5、利于攻击者计算出其它成对的e和d,而无需分解模数。解决办法只有一个,那就是不要共享模数n。RsA的小指数攻击。有一种提高RsA速度的建议是使公钥e取较小的值,这样会使加密变得易于实现,速度有所提高。但这样作是不安全的,对付办法就是e和d都取较大的值。三、实验内容主要的方法:(1)、publicstaticvoidgetprime()方法名称:产生大数的方法。说明:利用Java语言的中的java.math.bigInteger类的方法中随机产生大数。(2)、publicstaticbooleanmillerRobin(bigIntegernum)判断是否是素数的方法。参数说明:num是由getp

6、rime方法产生的大数。这个方法判断getprime方法传过来的是否是一个素数,是就返回true,否就返回false。(3)、publicstaticbigIntegerpowmod(bigIntegera,bigIntegert,bigIntegernum)大数的幂运算方法。这个方法对传入的大数进行幂运算。(4)、publicstaticbigIntegerinvmod(bigIntegera,bigIntegerb)大数的取模运算方法。这个方法对大数进行取模运算。(5)、publicstaticstringencode(stringinstr,bigIntegerprimep,bigInt

7、egerprimeQ,bigIntegern,intnLen,intm,JTextFieldd)加密算法。instr是从界面输入的明文。primep和primeQ是由getprime方法产生的两个大素数。n是由primep和primeQ得到的值。nLen为n的长度。d为公钥。(6)、publicstaticstringDecode(stringinstr,bigIntegerprimep,bigIntegerprimeQ,bigIntegern,intnLen,intm,JTextFielde)解密算法。primep和primeQ是由getprime方法产生的两个大素数。n是由primep和p

8、rimeQ得到的值。nLen为n的长度。e为私钥。流程图:RsA公钥加密算法流程图:RsA私钥解密算法流程图:篇二:实验二非对称密码算法RsA一、实验目的通过实际编程了解非对称密码算法RsA的加密和解密过程,加深对非对称密码算法的认识。二、实验环境运行windows或Linux操作系统的pc机,具有JDK1.6版本的Java语言编译环境。三、实验内容和步骤1.对RsA算法的理解RsA算法(公开密钥算法)的原理:(1)选择两个大的素数p和q(典型情况下为1024位)(2)计算n=p*q和z=(p-1)*(q-1).(3)选择一个与z互素的数,将它称为d(4)找到e,使其满足e*d=1modz提前

9、计算出这些参数以后,我们就可以开始执行加密了。首先将明文分成块,使得每个明文消息p落在间隔0*p为了加密一个消息p,只要计算c=pe(modn)即可。为了解密c,只要计算p=cd(modn)即可。可以证明,对于指定范围内的所有p,加密盒解密互为反函数。为了执行加密,你需要e和n;为了执行解密,你需要d和n。因此,公钥是有(e,n)对组成,而私钥是有(d,n)对组成。实例:根据已知参数:p=3,q=11,m=2,计算公私钥,并对明文进行加密,然后对密文进行解密。由题意知:n=p*q33,z=(p-1)*(q-1)20,选d7,计算得e=3,所以c=me(modn)8m=cd(modn)22、Rs

10、A算法与Des算法的比较:运行附件的RsATool,输入一大段文字,记录运行时间。再使用Des算法加密相同的文字,记录运行时间,对比这两个时间发现,RsA算法比Des算法慢很多,因为RsA算法进行的是大数运算,所以程序运行的速度比Des慢很多。因此RsA算法只适合于少量数据加密,不适合于大量数据加密。3、算法设计这个方法判断getprime方法传过来的是否是一个素数,是就返回true,否就返回false。(3)、publicstaticbigIntegerpowmod(bigIntegera,bigIntegert,bigIntegernum)方法名称:(5)、publicstaticstri

11、ngencode(stringinstr,bigIntegerprimep,bigIntegerprimeQ,bigIntegern,intnLen,intm,JTextFieldd)(6)、publicstaticstringDecode(stringinstr,bigIntegerprimep,bigIntegerprimeQ,bigIntegern,intnLen,intm,JTextFielde)方法名称:4、源程序:(RsA1.java文件)importjavax.swing.*;importjava.awt.event.*;importjava.math.*;importjava.

12、util.*;importjava.awt.*;importjava.io.*;publicclassRsA1publicstaticvoidmain(stringargs)myFrameframe=newmyFrame();mypanel_fbuttonpanel_fbutton=newmypanel_fbutton(frame,frame.p,frame.Q,frame.d,frame.e);FlowLayoutfl=newFlowLayout(FlowLayout.cenTeR,0,0);frame.setLayout(fl);frame.add(panel_fbutton);frame

13、.setbounds(150,100,500,480);frame.setDefaultcloseoperation(JFrame.exIT_on_cLose);frame.setVisible(true);classmyFrameextendsJFramepublicmyFrame()setTitle(RsA算法);add(wel);mypanel_ppanel_p=newmypanel_p(p);add(panel_p);mypanel_qpanel_q=newmypanel_q(Q);add(panel_q);mypanel_dpanel_d=newmypanel_d(d);add(pa

14、nel_d);mypanel_epanel_e=newmypanel_e(e);add(panel_e);mypanel_inpanel_in=newmypanel_in(input);add(panel_in);mypanel_outpanel_out=newmypanel_out(output);add(panel_out);mypanel_out1panel_out1=newmypanel_out1(output1);add(panel_out1);mypanel_buttonpanel_button=newmypanel_button(p,Q,d,e,input,output,outp

15、ut1);add(panel_button);privateJLabelwel=newJLabel(RsA算法演示protectedJTextFieldp=newJTextField(35);protectedJTextFieldQ=newJTextField(35);protectedJTextFieldd=newJTextField(35);protectedJTextFielde=newJTextField(35);protectedJTextAreainput=newJTextArea(4,35);protectedJTextAreaoutput=newJTextArea(4,35);

16、protectedJTextAreaoutput1=newJTextArea(4,35);classmypanel_fbuttonextendsJpanelpublicmypanel_fbutton(Frameaframe,JTextFieldap,JTextFieldaQ,JTextFieldad,JTextFieldae)frame=aframe;p=ap;Q=aQ;e=ae;d=ad;privateFrameframe;privateJTextFieldp;privateJTextFieldQ;privateJTextFieldd;privateJTextFielde;classmypa

17、nel_pextendsJpanelpublicmypanel_p(JTextFieldap)add(newJLabel(add(p);classmypanel_qextendsJpanelpublicmypanel_q(JTextFieldaQ)add(Q);classmypanel_dextendsJpanelpublicmypanel_d(JTextFieldad)质数p:);质数Q:公钥:add(d);classm(:rsa算法实验心得)ypanel_eextendsJpanelpublicmypanel_e(JTextFieldae)私钥:add(e);classmypanel_in

18、extendsJpanelpublicmypanel_in(JTextAreaainput)input=ainput;输入明文:Jscrollpanejsp1=newJscrollpane(input,v,h);add(jsp1);privateJTextAreainput;intv=Jscrollpane.VeRTIcAL_scRoLLbAR_As_neeDeD;inth=Jscrollpane.hoRIZonTAL_scRoLLbAR_As_neeDeD;classmypanel_outextendsJpanelpublicmypanel_out(JTextAreaaoutput)outp

19、ut=aoutput;生成的密文:Jscrollpanejsp=newJscrollpane(output,v,h);add(jsp);privateJTextAreaoutput;inth=Jscrollpane.hoRIZonTAL_scRoLLbAR_neVeR;classmypanel_out1extendsJpanel篇三:RsA算法的实现实验报告RsA算法的实现1.熟悉公钥密码体制;2.掌握产生密钥对的程序设计方法;3.掌握产生加密/解密的程序设计方法。二、实验内容和要求1.进行RsA加密/解密算法的设计;2.对RsA程序进行编译和调试;3.使用编写的程序进行加密和解密。三、实验环

20、境运行windows操作系统的pc机,可以利用具有Vc+语言环境;如果所运用的语言是JAVA,那么也可以利用JAVA语言环境来实现RsA算法的加密和解密。四、实验步骤1.采用c+语言进行本次实验的编写,实验的代码如下:#include#includeintcandp(inta,intb,intc)intr=1;b=b+1;while(b!=1)r=r*a;r=r%c;b-;printf(%dn,r);returnr;voidmain()intp,q,e,d,m,n,t,c,r;chars;pleaseinputthep,q:scanf(%d%d,n=p*q;thenis%3dn,n);t=(p

21、-1)*(q-1);thetis%3dn,t);printf(pleaseinputthee:%d,if(et)eiserror,pleaseinputagain:,d=1;while(e*d)%t)!=1)d+;thencaculateoutthatthedis%dn,d);thecipherpleaseinput1ntheplainpleaseinput2n,switch(r)case1:inputthem:/*输入要加密的明文数字*/scanf(,c=candp(m,e,n);thecipheris%dn,c);break;case2:inputthec:/*输入要解密的密文数字*/sc

22、anf(,m=candp(c,d,n);,m);getch();2、代码的思想:首先随意输入两个素数p和q,然后利用算法计算出p*q即n,再算出(p-1)*(q-1)即t,并且同时输出计算的结果n和t,接下来输入e,经过算法可以计算出d,由此可以知道RsA算法的公钥和私钥;接下来可以有两个选择:一选择输入明文,有明文经过算法可以计算出密文;二输入密文,有密文经过算法可以计算出明文。3、运行以上代码就可以得到实验的结果。五、实验结果实验结果如下图所示:六、实验心得:通过这次的实验,了解了非对称密码算法RsA,会运用一些现成的算法进行编程,对一些比较复杂的算法开始基本认识并深刻的掌握。在以后所涉及这方面的知识将会有全新的了解和掌握。刘新平专业:互联网班级:10-03班学号:5410120XX313

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1