RSA加密算法及实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数学文化课程报告题目:RSA公钥加密算法及实现
RSA公钥加密算法及实现
摘要
公钥密码是密码学界的一项重要发明,现代计算机与互联网中所使用的密码技术都得益于公钥密码。公钥密码是基于数学的上的困难问题来保证其性。其中RSA加密算法是一项重要的密码算法,RSA利用大整数的质数分解的困难性,从而保证了其相对安全性。但如果发现了一种快速进行质数分解的算法,则RSA算法便会失效。本文利用C 语言编程技术进行了RSA算法的演示[1]。
关键词:C语言编程、RSA算法、应用数学。
RSA public key encryption algorithm
Abstract
Public key cryptography 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 important 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 demonstrate the RSA algorithm.
Keywords:C language programming、RSA algorithm、Applied mathematics
目录
第1章引言 (1)
第2章RSA公钥密码算法的基本理论知识 (2)
2.1模运算操作、费马小定理与欧拉定理 (2)
2.1.1 模运算操作 (2)
2.1.2 费马小定理 (2)
2.1.3 欧拉定理 (2)
2.2 RSA算法的过程 (3)
2.3 RSA算法的可行性 (3)
第3章RSA算法的演示 (4)
3.1 RSA程序的设计 (4)
3.2 RSA算法的实现 (5)
3.3 RSA算法的演示 (6)
第4章结果分析与讨论 (7)
第5章结论 (8)
致 (9)
参考文献 (10)
附录 (111)
附录A 各函数C语言代码 (111)
第1章引言
计算机与网络技术的高速发展,使密码技术成为信息安全技术的核心。它主要由密码编码技术和密码分析技术两大分支组成。密码编码技术的主要任务是寻求产生安全性高的有效密码算法和协议,以满足对消息进行加密或认证的要求。密码分析技术的主要任务是破译密码或伪造认证信息,实现窃取信息或进行诈骗破坏话动。这两个分支既相互对立又相互依存,正是由于这种对立统一关系,才推动了密码学自身的发展[2]。
公钥加密中,密钥分为加密和解密密钥两种,发送者用加密密钥对消息进行加密,解密者用解密密钥对明文解密,公钥和密钥是一一对应的,一对公钥和密钥称为密钥对,由公钥加密的密文必须由与该公钥配对的密钥解密。密钥对中的两个密钥具有非常密切的关系,不能单独生成。
RSA公钥加密算法是1977年由罗纳德·维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。1987年首次公布,当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。
今天只有短的RSA钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。但在分布式计算和量子计算机理论日趋成熟的今天,RSA加密安全性受到了挑战。
RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现今的三十多年里,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一[3]。
第2章RSA公钥密码算法的基本理论知识
2.1模运算操作、费马小定理与欧拉定理
2.1.1模运算操作
对任意整数a和任意正整数n,存在唯一的整数q和r,满足。0 a=[a/n]+(a mod n) (2.1)且有(a*b)mod c =((a mod c)*(b mod c))mod c (2.2)费马定理和欧拉定理在公钥密码学中有重要的作用。 2.1.2费马小定理 如果P是素数,a是不能被P整除的正整数,则: a p-1≡1 mod p (2.3) 2.1.3欧拉定理 对于任何互质的整数a和n,有在数论中,欧拉定理,(也称费马-欧拉定理)是一个关于同余的性质。欧拉定理表明,若n,a为正整数,且n,a互质,φ(n)在1到n中为与n互质的数的个数,则: aφ(n) =1 mod n (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 (mod n) (这里假定mS更大一些),就有: mS-mR=a(xS-xR)=qn,即n能整除a(xS-xR)。但是a与n互质,a与n的最大公因子是1,而xS-xR