rsa算法实验报告

rsa算法实验报告

ID:19018388

大小:95.64 KB

页数:10页

时间:2018-09-27

rsa算法实验报告_第1页
rsa算法实验报告_第2页
rsa算法实验报告_第3页
rsa算法实验报告_第4页
rsa算法实验报告_第5页
资源描述:

《rsa算法实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、RSA算法的实现一、实验目的1、理解公钥密码体制基本原理。2、理解并能够编写RSA算法。3、熟练应用C++编程实现算法。二、实验内容利用C++编程实现RSA算法密码体制,算法描述参考课本P191-204。三、实验原理1、算法原理步骤如下(这里设B为是实现着)(1)B寻找出两个大素数p和q。(2)B计算出n=p*q和(n)=)(p-1)*(q-1)。(3)B选择一个随机数e(0

2、modn)解密时,对每一密文c计算明文mΞc(modn)2、主要函数说明(1)判断一个数是否为素数函数boolprime(intn){intm=sqrt(n);for(inti=2;i=m)return1;elsereturn0;}(2)模幂算法(这里以明文m为一个为例)①令f=1;②用for循环遍历从i=1到i=b,令f=(f*a)%n③输出f,f的值即为模幂的结果。intmultiplication(inta,intb,intn){intf=1;for(inti=1;i<=b;i++){f=(f*a)%n;}returnf;}(3

3、)扩展欧几里得算法由扩展欧几里得算法可以计算整数s和t,使得s*e+t*N=(e,N)=1,则e的乘法逆元等价于smodN。①定义变量x1,x2,x3,y1,y2,y3,t1,t2,t3,q;②令x1=y2=1;x2=y1=0;③计算q=x3/y3;t1=x1-q*y1;t2=x2-q*y2;t3=x3-q*y3;④x1=y1;x2=y2;x3=y3;y1=t1;y2=t2;y3=t3;⑤当y3=1时,*result=y2;result的结果即为所求乘法逆元;如果y3!=1,则返回顺序执行③、④步直到满足y3=1intExtendedEuclid(intf,intd,int*result){i

4、ntx1,x2,x3,y1,y2,y3,t1,t2,t3,q;x1=y2=1;x2=y1=0;if(f>=d){x3=f;y3=d;}else{x3=d;y3=f;}while(1){if(y3==1){*result=y2;/*两个数互素则resutl为其乘法逆元,此时返回值为1*/return1;}q=x3/y3;t1=x1-q*y1;t2=x2-q*y2;t3=x3-q*y3;x1=y1;x2=y2;x3=y3;y1=t1;y2=t2;y3=t3;}}(4)主函数①输入两个数字判断是否为素数,当不为素数时重新输入。如输入1711②输入e,得到公钥。如输入e为7③调用ExtendedEuc

5、lid(e,N,&d)函数,得到d,和私钥。如d=23④输入明文长度。如输入5如输入明文为5688781223⑤开始加密,调用加密函数Encryption()。则输入密文为781156177133⑥开始解密,调用解密函数Decipher()。则解密后明文为5688781223四、算法流程图开始输入两个素数p和qN调用Prime()Y找出N=(p-1)*(q-1)的所有公约数输入不等于N公约数的e输入明文长度len及明文i=0调用ExtendEuclid(e,N,&d)Ni

6、

7、重要。上课的时候只是听老师讲RSA算法顶多就是学会理论知识,而真正实践动手做的时候就会发现自己漏洞百出,因为考虑问题不周全,编写代码的时候总是出错,编写的不完善,算法的功能没有全部体现,最后又翻看了课本、大一的时候学的C++课本、大二学的密码学基础课本和信息安全概论课本。巩固了一些已经忘记了的基础知识,有不太理解的算法实现方法就通过上网查询以及与同学讨论来解决。这次写代码是我参与编写过的比较长的代

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。