毕业论文——RSA算法的实现

上传人:wo7****35 文档编号:60512465 上传时间:2018-11-16 格式:DOC 页数:37 大小:591KB
返回 下载 相关 举报
毕业论文——RSA算法的实现_第1页
第1页 / 共37页
毕业论文——RSA算法的实现_第2页
第2页 / 共37页
毕业论文——RSA算法的实现_第3页
第3页 / 共37页
毕业论文——RSA算法的实现_第4页
第4页 / 共37页
毕业论文——RSA算法的实现_第5页
第5页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《毕业论文——RSA算法的实现》由会员分享,可在线阅读,更多相关《毕业论文——RSA算法的实现(37页珍藏版)》请在金锄头文库上搜索。

1、RSA算法的实现摘 要本文设计的是一套完整实用的RSA文件加密解决方案,并具体编码实现。本文采用费马小定理测试素数,使用Montgomery加快大数模乘运算,用C+实现RSA加密算法类库,并在32位windows平台封装成组件。在.Net平台引用此组件,实现可以对任意文件进行RSA加密操作的窗体应用程序。经过加密的文件以及密钥文件都是文本文件。本文首先给出关键类类图、整个应用程序的结构描述文档,然后对关键模块流程图、详细的接口文档进行阐述,并给出关键的实现代码,最后对应用程序进行测试,对测试结果进行分析研究,进而对应用程序进行改进,对关键算法进行尽可能的优化,最终得到一个在windows运行的

2、可以用指定密钥对任意文件进行RSA加密并可解密的完整应用程序,和一些相关的可移植组件。关键词: RSA;文件加密;Montgomery;费马定理Implement of RSA AlgorithmAbstractIn this paper, a solution of encrypting file with RSA algorithm and the codes of this system are introduced. Fermat theory is used to test prime number. Montgomery is used to cut short the time

3、of modular multiplication of large number. The class library of RSA is implemented in C+, and packaged to component on the platform of 32 bits windows. On the platform of .Net, the application is implemented with reference of this component and can encrypt any file with RSA. Both encrypted files and

4、 key files are text files. In this paper, core class figures and the framework are first introduced. Then the flow of core modules and detail interfaces are stated and the kernel codes are showed also. Finally, it analyzes the result of test, then optimizes core algorithm. In the conclusion, an enti

5、re application which can encrypt any files with RSA algorithm using given key and some transplanted components are implemented.Key words: RSA ; File Encryption ; Montgomery ; Fermat目 录论文总页数:35页1 引言11.1课题背景11.2 RSA算法介绍与应用现状11.3 RSA应用于文件加密的分析21.3.1 文件加密使用RSA的可行性21.3.2 文件加密使用RSA的意义32 RSA文件加密软件的设计与实现42.

6、1 需求分析与总体设计42.1.1 功能分析42.1.2 工程方案选择42.2 各部分的设计与开发52.2.1 实现RSA加密算法的C+核心类库52.2.2 封装C+核心类库的DLL组件252.2.3 引用DLL的.Net类与实现文件操作功能的窗体应用程序263 软件整体测试与分析改进273.1 编写测试各项性能需要的精确计时类273.2 测试数据与分析改进273.2.1 密钥生成测试273.2.2 数据输入输出测试283.2.3 加密解密测试29结 论31参考文献32附 录33致 谢34声 明351 引言1.1课题背景RSA公钥加密算法是第一个既能用于数据加密也能用于数字签名的算法。它易于理

7、解和操作,也十分流行。算法的名字以发明者的姓氏首字母命名:Ron Rivest, Adi Shamir 和Leonard Adleman。虽然自1978年提出以来,RSA的安全性一直未能得到理论上的证明,但它经历了各种攻击,至今(2006年)未被完全攻破。随着越来越多的商业应用和标准化工作,RSA已经成为最具代表性的公钥加密技术。VISA、MasterCard、IBM、Microsoft等公司协力制定的安全电子交易标准(Secure Electronic Transactions,SET)就采用了标准RSA算法,这使得RSA在我们的生活中几乎无处不在。网上交易加密连接、网上银行身份验证、各种信

8、用卡使用的数字证书、智能移动电话和存储卡的验证功能芯片等,大多数使用RSA技术。当今公钥加密更广泛应用于互联网身份认证,本课题将公钥加密算法RSA应用于小型文件加密。将任意文件加密成文本的解决方案,使其使用更加灵活。整个工程的分层设计,给引用移植和后续开发带来便利。1.2 RSA算法介绍与应用现状RSA算法可以简单叙述如下:取素数p,q,令n=pq.取与(p-1)(q-1)互素的整数e,由方程de=1 (mod (p-1)(q-1)解出d,二元组(e,n)作为公开密钥,二元组(d,n)作为私有密钥b=ae mod n,c=bd mod n.附录中给出了证明a=c (mod n).RSA公开密钥

9、加密算法自20世纪70年代提出以来,已经得到了广泛认可和应用。发展至今,电子安全领域的各方面已经形成了较为完备的国际规范。RSA作为最重要的公开密钥算法,在各领域的应用数不胜数。RSA在硬件方面,以技术成熟的IC应用于各种消费类电子产品。RSA在软件方面的应用,主要集中在Internet上。加密连接、数字签名和数字证书的核心算法广泛使用RSA。日常应用中,有比较著名的工具包Open SSL(SSL,Security Socket Layer,是一个安全传输协议,在Internet上进行数据保护和身份确认。Open SSL是一个开放源代码的实现了SSL及相关加密技术的软件包,由加拿大的Eric

10、Yang等发起编写的。相关详细介绍见http:/www.openssl.org/about/ )。Open SSL应用RSA实现签名和密钥交换,已经在各种操作系统得到非常广泛的应用。另外,家喻户晓的IE浏览器,自然也实现了SSL协议,集成了使用RSA技术的加密功能,结合MD5和SHA1,主要用于数字证书和数字签名,对于习惯于使用网上购物和网上银行的用户来说,几乎天天都在使用RSA技术。1.3 RSA应用于文件加密的分析1.3.1 文件加密使用RSA的可行性通过1.2节的论述,不难看出RSA当今的应用多在于数字签名和证书等方面。之所以只应用于这些短小数据的加密解密,是因为RSA算法加密极慢,速度

11、是DES对称密钥加密速度的千分之一左右。正是因为这样,把RSA应用于普通文件加密的想法一直被忽略。通常文件被想象成大数据块,但是实际上在日常应用中,有些极其重要的文本资料是并不太大的,比如因担心遗忘而用普通文本记录的银行帐号和密码、不应被陌生人知道的重要电话号码、几千字节大的重要小图片等。虽然RSA加密运算的速度十分慢,但是在PC性能越来越好的今天,对于几千字节的数据进行一次几百位密钥的RSA加密,所消耗的时间应该是可以接受的。下面结合大数运算程序的调试,从理论上简单的分析消耗时间。在一台普通配置的PC机上对一个整数进行幂模运算,因为公开密钥的e通常取的较小,所以指数取一个小整数,比如C353

12、,模一个70字节长的整数(140位十六进制,大数单元以线性组方式实现,对应到RSA算法中,这相当于约560bit的n),调试一个函数测试,按初等数论中的知识对程序进行算法优化,最终在一台配置为AMD Athron2800+,外频333MHZ,物理内存512MB的PC上测试需要约45毫秒时间。如果按这种速度,逐字节对1KB的数据进行同样的运算,所消耗的时间理论上为45毫秒的1024倍即约45秒。这个时间并不是非常长。其实从一个简单的角度来说,既然RSA用于数字签名可行,那就完全可以用于同样大小的普通文件。对于较大的文件,如果分成与数字签名同样大小的段(这里假设数字签名较短,不分段一次计算加密完成

13、),分开的各段逐一进行加密运算,那所需要的时间也只是按文件大小线性的增长。通常数字签名为几十字节,加密运算并不需要很长的等待,这就说明对于几百字节或一两K字节大小的文件来说,如果进行RSA加密,并不会是非常漫长的工作。当然,如果文件更大,加密就显得十分漫长了。比如按前面叙述的45毫秒大数运算程序推理,加密1M字节大小的文件需要约1天的时间。所以,要在普通PC用几百位以上的长密钥RSA加密文件,文件不能过大,一般可以接受的上限是几KB。如果要在较短时间内加密大文件,需要缩短密钥长度以减小运算量,这将带来安全性隐患。本文的第3章将根据实际调试好的软件,测试给出具体的时间消耗数据。例如,在一台配置为

14、AMD Athron2800+,外频333MHZ,物理内存512MB的PC上测试实现的软件,以560bit的n逐字节加密一个1KB大小的文件需要55秒。通常记录如银行帐号密码等重要数据的文本文件大小不足百字节,加密只需要数秒钟。所以对于小型文件,进行较长密钥的RSA加密是完全可行的。1.3.2 文件加密使用RSA的意义如1.3.1节所述,小型文件加密可以使用RSA。比如,因担心遗忘而用普通文本记录的银行帐号和密码、不应被陌生人知道的重要电话号码、几千字节大的重要小图片等。可行的方法未必是必要的,本小节讨论何种文件适合用非对称密钥加密,即RSA加密文件的意义所在。对于前面叙述的带有重要信息的小型

15、文本和二进制数据的维护,如果不加密,将无法放心的保存在计算机上,尤其是连网的或机房里的公共计算机。如果借助功能强大的大型多用户数据保护程序维护几个小型文件,显得十分烦琐,好比杀鸡用牛刀。如果采用对称密钥加密,即加密解密的密钥相同,只适合部分情况。在某些情况下,使用对称密钥加密文件,交流使用不够方便。比如,张三由于某种原因,需要将自己的某个文件在公共计算机上留给李四,而不希望别人看到内容。如果采用对称密钥加密,张三和李四提前约好一个密码就可以。但是如果张三想要在同一台公共计算机上再留一个秘密文件给王五,而不希望别人看到,就要和王五另外约定一个密码。如果需要在这台公共计算机上留十个文件给不同的人,自己就要记和十个人约定好的密码,这样以来交流起来不够方便,因为对于张三,要自己维护太多的密钥。非对称密钥(公开密钥方式)恰好解决这样的问题。只要大家都在这台计算机或这台计算机可以访问到的地方,留下自己的公开密钥,一切就变的容易解决了。张三要留给李四的文件,就用李四的公开密钥加密,要留给王五的文件,就用王五的公开密钥加密。李四和王五只要把留给自己的文件用自己的私有密钥解密,就可以得到留给自己的文件了。显然,非对称密钥体制更适合多用户交流,而将这种加密方式直接应用于文件加密,使我们在公开场合的交流更加灵活方便。综上所述,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 毕业论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号