您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 电子商务 > RSA加密算法及实现
数学文化课程报告题目:RSA公钥加密算法及实现中国石油大学(华东)RSA公钥加密算法及实现摘要公钥密码是密码学界的一项重要发明,现代计算机与互联网中所使用的密码技术都得益于公钥密码。公钥密码是基于数学的上的困难问题来保证其机密性。其中RSA加密算法是一项重要的密码算法,RSA利用大整数的质数分解的困难性,从而保证了其相对安全性。但如果发现了一种快速进行质数分解的算法,则RSA算法便会失效。本文利用C语言编程技术进行了RSA算法的演示[1]。关键词:C语言编程、RSA算法、应用数学。中国石油大学(华东)RSApublickeyencryptionalgorithmAbstractPublickeycryptographyisanimportantinventionincryptography,thankstopublickeycryptography,anditisusedinmoderncomputerandInternetpasswordtechnology.Publickeycryptographyisbasedonthemathematicsdifficultproblemtoensureitsconfidentiality.TheRSApublickeyencryptionalgorithmisanimportantcryptographicalgorithm,RSAusingthedifficultythatlargeintegerishardtobefactorizedintoprimeNumberstoensureitsafety.Butifyoucanfindakindoffastalgorithmtodothefactorization,RSAalgorithmwillbefailure.InthispaperweusedClanguageprogrammingtechnologytodemonstratetheRSAalgorithm.Keywords:Clanguageprogramming、RSAalgorithm、Appliedmathematics中国石油大学(华东)目录第1章引言....................................................................................................................1第2章RSA公钥密码算法的基本理论知识................................................................22.1模运算操作、费马小定理与欧拉定理................................................................22.1.1模运算操作.................................................................................................22.1.2费马小定理.................................................................................................22.1.3欧拉定理.....................................................................................................22.2RSA算法的过程...................................................................................................32.3RSA算法的可行性...............................................................................................3第3章RSA算法的演示................................................................................................43.1RSA程序的设计...................................................................................................43.2RSA算法的实现...................................................................................................53.3RSA算法的演示...................................................................................................6第4章结果分析与讨论.................................................................................................7第5章结论.....................................................................................................................8致谢.................................................................................................................................9参考文献...........................................................................................................................10附录.............................................................................................................................111附录A各函数C语言代码................................................................................111第1章引言1第1章引言计算机与网络技术的高速发展,使密码技术成为信息安全技术的核心。它主要由密码编码技术和密码分析技术两大分支组成。密码编码技术的主要任务是寻求产生安全性高的有效密码算法和协议,以满足对消息进行加密或认证的要求。密码分析技术的主要任务是破译密码或伪造认证信息,实现窃取机密信息或进行诈骗破坏话动。这两个分支既相互对立又相互依存,正是由于这种对立统一关系,才推动了密码学自身的发展[2]。公钥加密中,密钥分为加密和解密密钥两种,发送者用加密密钥对消息进行加密,解密者用解密密钥对明文解密,公钥和密钥是一一对应的,一对公钥和密钥称为密钥对,由公钥加密的密文必须由与该公钥配对的密钥解密。密钥对中的两个密钥具有非常密切的关系,不能单独生成。RSA公钥加密算法是1977年由罗纳德·李维斯特(RonRivest)、阿迪·萨莫尔(AdiShamir)和伦纳德·阿德曼(LeonardAdleman)一起提出的。1987年首次公布,当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。今天只有短的RSA钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。但在分布式计算和量子计算机理论日趋成熟的今天,RSA加密安全性受到了挑战。RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现今的三十多年里,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一[3]。第2章RSA公钥密码算法的基本理论知识2第2章RSA公钥密码算法的基本理论知识2.1模运算操作、费马小定理与欧拉定理2.1.1模运算操作对任意整数a和任意正整数n,存在唯一的整数q和r,满足。0r=n,并且a=n*q+r,值q=[a/n]称为除法的商,其中[b]表示小于等于x的最大整数。值r=aroodn称为除法的余数,因此,对于任意整数,可表示为:a=[a/n]+(amodn)(2.1)且有(a*b)modc=((amodc)*(bmodc))modc(2.2)费马定理和欧拉定理在公钥密码学中有重要的作用。2.1.2费马小定理如果P是素数,a是不能被P整除的正整数,则:ap-1≡1modp(2.3)2.1.3欧拉定理对于任何互质的整数a和n,有在数论中,欧拉定理,(也称费马-欧拉定理)是一个关于同余的性质。欧拉定理表明,若n,a为正整数,且n,a互质,φ(n)在1到n中为与n互质的数的个数,则:aφ(n)=1modn(2.4)欧拉定理证明:将1~n中与n互质的数按顺序排布:x1,x2……xφ(n)(显然,共有φ(n)个数)我们考虑这么一些数:m1=a*x1;m2=a*x2;m3=a*x3……mφ(n)=a*xφ(n)1)这些数中的任意两个都不模n同余,因为如果有mS≡mR(modn)(这里假定mS更大一些),就有:mS-mR=a(xS-xR)=qn,即n能整除a(xS-xR)。但是a与n互质,a与n的最大公因子是1,而xS-xRn,因而左式不可能被n整除。也就是说这些数中的任意两个都不模n同余,φ(n)个数有φ(n)种余数。第2章RSA公钥密码算法的基本理论知识32)这些数除n的余数都与n互质,因为如果余数与n有公因子r,那么a*xi=pn+qr=r(……),a*xi与n不互质,而这是不可能的。那么这些数除n的余数,都在x1,x2,x3……xφ(n)中,因为这是1~n中与n互质的所有数,而余数又小于n.由1)和2)可知,数m1,m2,m3……mφ(n)(如果将其次序重新排列)必须相应地同余于x1,x2,x3……xφ(n).故得出:m1*m2*m3……mφ(n)≡x1*x2*x3……xφ(n)(modn)或者说a^[φ(n)]*(x1*x2*x3……xφ(n))≡x1*x2*x3……xφ(n)或者为了方便:K{a^[φ(n)]-1}≡0(modn)这里K=x1*x2*x3……xφ(n)。以上定理是我们证明RSA算法可行性的基础[4]。2.2RSA算法的过程N=p*q,其中p和q是素数,L为(p-1)和(q-1)的公倍数,L=lcm((p-1),(q-1))(由欧拉函数得出)。E为与L互质的随机数,D是使得(D*E)modL=1的数。M为明文,E为加密后的密文,{E,N}为公钥,可以公开,{D,N}为私钥由自己保管。甲向乙发送自己的公钥,乙用公钥加密后,将密文发送给甲,甲用私钥解密,得到密文。加密算法为:E=MEmodN。解密算法为:M=EDmodN。其中有M与E小于N,均大于0。2.3RSA算法的可行性RSA算法
本文标题:RSA加密算法及实现
链接地址:https://www.777doc.com/doc-5104832 .html