摘 要:RSA在现在多被应用于数字签名和证书等方面.之所以只应用于加密解密这些短小的数据段,原因是RSA算法加密速度极慢,它的速度是DES对称密钥加密速度的千分之一左右.正是如此,把RSA应用于普通文件加密的想法才一直被忽视了.一般情况下文件会被想象成一个个大的数据块,但是实际的日常应用中,有些十分重要的文本资料,它的数据量是并不太大的,举些例子,比如因担心遗忘而用普通文本记录的银行帐号和密码、不应被陌生人知道的重要电话号码、几千字节大的重要小图片等,因此RSA加密软件在这时就有了用武之地.
RSA加密软件是对小型的文本文件进行加密的工具,其设计标准应该在满足保密信息功能的同时,尽可能的提高加密的速度.虽然它的速度是DES算法的几千分之一,但是由于计算机发展的越来越快,其运算速度也得到了大大的提高,使用本软件对一个有几千字节数据量的数据进行一次几百位密钥的RSA加密,这中间用户所等待的时间应该是完全可以接受的.
RSA加密软件应满足美观、便捷实用,用户体验好等要求.在加密过程中应满足能生成密钥、保存密钥和装载密钥,密钥保存为纯文本;用指定密钥以RSA算法加密任意一个文件,加密生成的数据为纯文本;可以装载加密过的文件,并用指定的密钥解密还原出原文件;美观主要体现在用户界面的设计上,用户界面上各功能选项要清楚,选项名称应浅显易懂,能够让用户非常容易地操作该软件.在本文设计的RSA加密软件,应该尽可能地符合以上标准.除此以外,由于现在对于软件的可移植性提出越来越高的要求,应尽可能的考虑移植性.
RSA加密软件在设计的过程中,要满足代码可维护、效率性、容易理解等设计原则.其中,代码可维护原则是为了保证代码的可移植性,方便日后对程序的修改或者优化.效率性应尽可能对内存合理分配,尽可能优化算法,使运行时间缩短.容易理解要求软件设计有明晰简单的结构,代码的备注尽可能的清晰可读.
本文主要技术资料有《数论导引》、《基于RSA算法的一种新的加密核设计》、《Mathematics of Computation》等.其中,《数论导论》由浅入深,深刻而广泛地介绍了古典数论与近代数论的基本内容和研究方法,揭示了数学各分支与数论之间的深刻关系,本片论文主要用到它的关于素数方面的内容.《基于RSA算法的一种新的加密核设计》介绍了一种称为平方乘积二进制快速算法.《Mathematics of Computation》一文中详细地阐述了提出了一种模加右移的乘模算法,从而避免了通常求模算法中费时的除法步骤提高乘模运算的速度从而提高模幂运算速度.
关键词:RSA ; RSA算法 ;文件加密; 加密成文本
目录
摘要
ABSTRACT
第1章 绪论-1
1.1 课题背景-1
1.1.1 RSA算法简介-1
1.1.2 RSA算法的应用现状及优势-1
1.1.3 RSA算法原理及应用于文件加密可行性分析-2
1.1.4 RSA算法的评价标准-4
1.2 课题意义-5
1.3本文主要工作-6
1.4论文组织结构-6
第2章 加密软件整体框架设计与实现-7
2.1用户角度看待此软件的要求-7
2.1.1 生成密钥-7
2.1.2 载入密钥-8
2.1.3 保存密钥-8
2.1.4加密和解密文件-9
2.2 几种可行的方案-10
2.2.1 整个工程使用java平台实现-10
2.2.2 整个工程使用.Net平台实现-11
2.2.3 整个工程使用Windows本地化程序实现-11
2.2.4 考虑可能的复用,针对具体情况分层开发实现-11
第3章 RSA加密软件各功能模块的设计与实现-13
3.1 RSA加密算法的C++里的几种核心算法的阐述-13
3.1.1 大数存储和四则运算-13
3.1.2 大数幂模与乘模运算•Montgomery幂模算法-14
3.1.3寻找素数•Eratosthenes筛选与Fermat素数测试-18
3.1.4二元一次不定方程-20
3.2按常规RSA算法实现加密与解密-21
3.3核心类库综述-21
3.4封装C++核心类库的DLL组件-22
3.5引用DLL的.Net类与实现文件操作功能的窗体应用程序-23
第4章 文档加密器软件测试与结果分析-25
4.1 软件测试-25
4.1.1 测试环境-25
4.1.2测试过程-25
4.2 用控制变量法对软件性能进行分析-39
4.2.2用同样的密钥对不同大小的文件公钥加密,加密后生成的文件大小与待加密文件大小的关系-40
4.2.3以多字节为步长,对文件进行加密-41
第5章 总结与展望-43
5.1 总结-43
5.2 展望-43
参考文献-45
致 谢-47