RSA加密算法及实现.doc

上传人:牧羊曲112 文档编号:4197309 上传时间:2023-04-09 格式:DOC 页数:22 大小:120.50KB
返回 下载 相关 举报
RSA加密算法及实现.doc_第1页
第1页 / 共22页
RSA加密算法及实现.doc_第2页
第2页 / 共22页
RSA加密算法及实现.doc_第3页
第3页 / 共22页
RSA加密算法及实现.doc_第4页
第4页 / 共22页
RSA加密算法及实现.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《RSA加密算法及实现.doc》由会员分享,可在线阅读,更多相关《RSA加密算法及实现.doc(22页珍藏版)》请在三一办公上搜索。

1、数学文化课程报告题 目:RSA公钥加密算法及实现RSA公钥加密算法及实现摘 要公钥密码是密码学界的一项重要发明,现代计算机与互联网中所使用的密码技术都得益于公钥密码。公钥密码是基于数学的上的困难问题来保证其机密性。其中RSA加密算法是一项重要的密码算法,RSA利用大整数的质数分解的困难性,从而保证了其相对安全性。但如果发现了一种快速进行质数分解的算法,则RSA算法便会失效。本文利用C语言编程技术进行了RSA算法的演示1。关键词:C语言编程、RSA算法、应用数学。RSA public key encryption algorithm AbstractPublic key cryptography

2、 is an important invention in cryptography, thanks to public key cryptography, and it is used in modern computer and Internet password technology. Public key cryptography is based on the mathematics difficult problem to ensure its confidentiality. The RSA public key encryption algorithm is an import

3、ant cryptographic algorithm, RSA using the difficulty that large integer is hard to be factorized into prime Numbers to ensure it safety. But if you can find a kind of fast algorithm to do the factorization, RSA algorithm will be failure. In this paper we used C language programming technology to de

4、monstrate the RSA algorithm. Keywords:C language programming、RSA algorithm、Applied mathematics目 录第1章 引言1第2章 RSA公钥密码算法的基本理论知识2模运算操作、费马小定理与欧拉定理2 模运算操作2 费马小定理2 欧拉定理2 RSA算法的过程3 RSA算法的可行性3第3章 RSA算法的演示4 RSA程序的设计4 RSA算法的实现5 RSA算法的演示6第4章 结果分析与讨论7第5章 结论8致 谢9参考文献10附 录11附录A 各函数C语言代码11第1章 引言计算机与网络技术的高速发展,使密码技术成

5、为信息安全技术的核心。它主要由密码编码技术和密码分析技术两大分支组成。密码编码技术的主要任务是寻求产生安全性高的有效密码算法和协议,以满足对消息进行加密或认证的要求。密码分析技术的主要任务是破译密码或伪造认证信息,实现窃取机密信息或进行诈骗破坏话动。这两个分支既相互对立又相互依存,正是由于这种对立统一关系,才推动了密码学自身的发展2。公钥加密中,密钥分为加密和解密密钥两种,发送者用加密密钥对消息进行加密,解密者用解密密钥对明文解密,公钥和密钥是一一对应的,一对公钥和密钥称为密钥对,由公钥加密的密文必须由与该公钥配对的密钥解密。密钥对中的两个密钥具有非常密切的关系,不能单独生成。RSA公钥加密算

6、法是1977年由罗纳德李维斯特(Ron Rivest)、阿迪萨莫尔(Adi Shamir)和伦纳德阿德曼(Leonard Adleman)一起提出的。1987年首次公布,当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。今天只有短的RSA钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。但在分布式计算和量子计算机理论日趋成熟的今天,RSA加密安全性受

7、到了挑战。RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现今的三十多年里,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一3。第2章 RSA公钥密码算法的基本理论知识模运算操作、费马小定理与欧拉定理模运算操作对任意整数a和任意正整数n,存在唯一的整数q和r,满足。0r=n,并且a=n*q+r,值q=a/n称为除法的商,其中b表示小于等于x的最大整数。值r=a rood n称

8、为除法的余数,因此,对于任意整数,可表示为:a=a/n+(a mod n) 且有(a*b)mod c =(a mod c)*(b mod c)mod c 费马定理和欧拉定理在公钥密码学中有重要的作用。费马小定理如果P是素数,a是不能被P整除的正整数,则:ap-11 mod p 欧拉定理对于任何互质的整数a和n,有在数论中,欧拉定理,(也称费马-欧拉定理)是一个关于同余的性质。欧拉定理表明,若n,a为正整数,且n,a互质,(n)在1到n中为与n互质的数的个数,则:a(n) =1 mod n 欧拉定理证明:将1n中与n互质的数按顺序排布:x1,x2x(n) (显然,共有(n)个数)我们考虑这么一些

9、数:m1=a*x1;m2=a*x2;m3=a*x3m(n)=a*x(n)1)这些数中的任意两个都不模n同余,因为如果有mSmR (mod n) (这里假定mS更大一些),就有:mS-mR=a(xS-xR)=qn,即n能整除a(xS-xR)。但是a与n互质,a与n的最大公因子是1,而xS-xR=1。所以:ME*D=Mt*L+1 mod N=(Mt*L mod N)(M mod N)mod N因此可以通过证明 Mt*L=1 mod N成立来证明。欧拉定理证明有aL =1 mod n,所以:Mt*L=1 mod N从理论上证明算法可逆,第3章 RSA算法的演示在编写程序之前先理清思路,设计关键的函数

10、的入口、出口、功能、编写出伪代码。之后,便是进行函数编写、调试阶段。最后,便将函数组合在一起,使之成为一个完整的程序。 RSA程序的设计程序中有判断是否为质数、求两个数的公倍数、判断是否互质、求最大互质数、由E和L求出密钥D、加密算法和解密算法。各函数算法见附录 A。 RSA算法的实现RSA加密产生公钥和密钥过程可分为以下四步:(1)得出公钥中的N:随机取两个不同的素数,p和q,N=p*q。(2)求出L:L的值为(p-1)和(q-1)的最小公倍数,L=lcm(p-1),(q-1)。(3)求出一个随机的公钥E:求出一个与L互质的数E,有gcd(E,L)=1。(4)求出一个随机密钥D:密钥D应满足

11、(D*E)mod L=1;主函数的代码如下:int main() long int p,q,E,D,N,L,ming,mi; display(); srand(time(NULL); do p=rand()%500; while(p100|!(iszs(p); do q=rand()%500; while(!(iszs(q)|p=q); N=p*q; L=lcm(p-1,q-1); E=gcd(L); D=qiuD(E,L); if(D=0|EN|ming=0); mi=Encryption(E,N,ming); ming=Decryption(D,N,mi); printf(公钥:E=%ld

12、 N=%ld 密文:%ldn密钥:D=%ld N=%ld 明文:%ldn,E,N,mi,D,N,ming); printf(还想再来一次吗y/n:); while(y=getchar(); printf(See you!n); return 0; RSA算法的演示完成编程后,便做了一次测试,测试结果如图3-1所示。图3-1 命令行中运行结果第4章 结果分析与讨论RSA密码体制安全性任何密码都没有绝对的安全性,RSA密码体制同样如此,但RSA密码经过了20年的考验,可以说,迄今为止,没有一种相对有效的方法去由公钥破解私钥,由公钥破解私钥等价于将公钥E,N中的N,分解为两个质数的积,从而算出私钥D

13、,N。将一个数有效分解为两个因子之积是数学上的一大难题,当N增大一位时,时间复杂度呈倍增长。无论N有多长,总有一天能被质因数分解,1999年,512比特的整数由292台计算机花费个月才完成。RSA密码的优点与缺点RSA算法理论非常简单,应用的数学原理,非常巧妙,但是其实现性不如对称密码容易。RSA算法在实际过程中需要找到合适的p和q,得到一个合适的N,实际过程中,N有100位之多,甚至有1024位,但是如此之大的数给加密,解密都带来一定的困难,算法没有对称密码加密快5。尽管如此,但是由于其相对较高的安全性使得其应用非常广泛。于是出现了用硬件进行RSA算法计算,加快了处理速度6。第5章 结论RS

14、A密码算法在现在来说还是相当可靠的,因为迄今没有一个相当好的算法来分解一个大的整数。此外,RSA算法可以和其他加密算法一起使用,或者用于数字签名。通过不断的学习RSA算法的相关知识,完成了这篇论文,自身的知识有了很大的提高,了解了RSA算法的基本内容后,对其进行编程测试,自身的能力也有所提高。 致 谢数学文化课的学习即将结束,在此,我要感谢费祥历老师的教育之恩。本文离不开梁玉环老师在C语言课程中的教育,在此表示忠心的感谢。参考文献1 日结城浩,.图解密码技术M.人民邮电出版社,.2 周升力. RSA密码算法的研究与快速实现J.3百度百科.RSA算法_百度百科. 百度百科. 欧拉定理_百度百科.

15、 日结城浩.图解密码技术M.人民邮电出版社,.6 刘嘉勇.应用密码学.M.清华大学出版社.附 录附录A 相关函数/*判断是否为质数*/long int iszs(long int a) long int b=0; if(a=1; b-) if(0=a%b) break; if(1=b) return 1; else return 0; /*求两个数的公倍数L*/long int lcm(int p,int q) long int a=1,b=1,all=1; if(q0&p0) if(pq) a=q; else a=p; for(b=a; b=2; b-) if(p%b=0&q%b=0) p=

16、p/b; q=q/b; all=all*b; all=all*p*q; return all; else printf(ERROR in lcm!n); return 0; /*判断是否互质*/long int ishz(int p,int q) long int c; if(p1&q1) do c=p%q; p=q; q=c; while(c1); if(q=1) return 1; else return 0; else return 0; /*求最互质数E*/long int gcd(int L) long int a=2; do a+; while(!(1=ishz(L,a); ret

17、urn a;/*由E和L求出密钥D*/long int qiuD(int E, int L) long int D; for(D=1; D1000000; D+) if(D*E)%L=1) return D; return -1;/*加密算法*/long int Encryption(long int E,long int N,long int ming) long int mi=ming; int i; for(i=1; iE; i+) mi=(ming*mi)%N; return mi;/*解密算法*/long int Decryption(long int D,long int N,long int mi) long int ming=mi; long int i; for(i=1; iD; i+) ming=(mi*ming)%N; return ming;对数学文化课程的建议我对老师印象非常好,不过我自己认为数学之美的内容偏少,可以增加一些,让同学们了解更多数学美的内涵,并运用计算机技术发掘数学的美。另外,可以线上线下同时学习,不过课时可能会增长很多,学生压力会增加。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号