摘要:计算机和网络技术的发展将人类带入信息化社会,随之而来的是倍受关注的信息安全问题。现代密码学已成为信息安全技术的核心技术。加密算法和数字签名,这两项重要的信息安全防护技术,正是现代密码学的主要应用研究成果。 本文介绍了加密算法的研究背景和意义,系统地分析了加密算法的应用现状,以及文件加密应用RSA算法的可行性和意义。文中给出了关键类类图、整个应用程序的结构描述文档、关键模块流程图、较详细的接口文档、主要源代码。本系统用C++实现加密算法,并在32位windows平台将它封装成组件,以便实现可以对任意文件进行加密和解密操作的窗体应用程序。对应用程序进行测试,对关键算法进行尽可能的优化,最终得到一个在windows下运行的可以用指定密钥对任意文件进行RSA加密和解密并且能够进行数字签名和验证的完整应用程序。(所有权: 毕业设计网 QQ:306826066) 关键词: RSA算法 文件加密 数字签名和验证
Studies and Implement on Encrypt algorithm and Digital Signature Student name: Class: Supervisor: Abstract :With the development of computer and network technologies human beings have entered into the information era;Thus, the security problem of information has become the fundamental matter. The modern cryptography is the kernel technique of information security. The encrypt algorithm and digital signature is the main researches in modern cryptography, and it cannot be substituted by other techniques in information security. This article introduces the research background and meaning of the encrypt algorithm and systematically do research about the application area of encryption and reason that RSA can be used for file encryption. Provide pivotal classes chart, project description, core algorithm flowchart, the main source code, and module interfaces document. Design a C++ class based on normal algorithm and make a DLL module based on the class. The application can encrypt any file and decrypt them. Do application performance test and analyze the result then optimize core algorithm and improve the application. Finally, create a practical application using RSA algorithm that can encrypt and decrypt any file. The practical application can also do digital signature and certification on any file. Keyword: RSA algorithm file encryption digital signature and certification
Signature of Supervisor:
RSA公钥加密算法是第一个既能用于数据加密也能用于数字签名的算法。它易于理解和操作,也十分流行。算法的名字以发明者的姓氏首字母命名:Ron Rivest, Adi Shamir 和Leonard Adleman。虽然自1978年提出以来,RSA的安全性一直未能得到理论上的证明,但它经历了各种攻击,至今(2006年)未被完全攻破。随着越来越多的商业应用和标准化工作,RSA已经成为最具代表性的公钥加密技术。VISA、MasterCard、IBM、Microsoft等公司协力制定的安全电子交易标准(Secure Electronic Transactions,SET)就采用了标准RSA算法,这使得RSA在我们的生活中几乎无处不在。网上交易加密连接、网上银行身份验证、各种信用卡使用的数字证书、智能移动电话和存储卡的验证功能芯片等,大多数使用RSA技术。 目前国际上尚未解决的技术难点和问题是RSA算法只应用于这些短小数据的加密解密,是因为RSA算法加密极慢,速度是DES对称密钥加密速度的千分之一左右。正是因为这样,把RSA应用于普通文件加密的想法一直被忽略。例如,在一台配置为AMD Athron2800+,外频333MHZ,物理内存512MB的PC上测试实现的软件,以560bit的n逐字节加密一个仅1KB大小的文件需要55秒。(所有权: 毕业设计网 QQ:306826066) 1.3. 课题的技术概述 1)本系统是在面向对象的Visual C++环境下编码实现的,所以下面先简单介绍下Visual C++编程技术。 Visual C++的源程序要求用C++语言编写,它支持面向对象设计方法,并可以使用功能强大的微软基础类库MFC(Microsoft foundation class),充分体现了Microsoft公司的技术精华。采用MFC方式编程可以提高Windows应用程序的开发效率,利用MFC编写应用程序时不必过多考虑编程的细节,只需将精力放在程序具体功能代码的编写上。 MFC作为一个Windows编程类库,包含了200多个由微软专业人员设计好的类,封装了大部分编程对象以及与它们有关的操作,它包含的功能涉及到整个Windows操作系统。MFC实际上是一个庞大的文件库,它由几百个执行文件(如LIB文件)和源代码文件(如H文件)组成。本系统的一些功能都是由MFC类库来实现的。 2)本系统的加密算法是采用非对称RSA算法,下面对RSA算法进行下简单介绍。 RSA公开密钥加密算法自20世纪70年代提出以来,已经得到了广泛认可和应用。发展至今,电子安全领域的各方面已经形成了较为完备的国际规范。RSA作为最重要的公开密钥算法,在各领域的应用数不胜数。RSA在软件方面的应用,主要集中在Internet上。加密连接、数字签名和数字证书的核心算法广泛使用RSA。RSA主要用于数字证书和数字签名,对于习惯于使用网上购物和网上银行的用户来说,几乎天天都在使用RSA技术。RSA的安全性依赖于大数分解。公钥和私钥都是两个大素数(大于 100个十进制位)的函数。据猜测,从一个密钥和密文推断出明文的难度等同于分解两个大素数的积。密钥对的产生:选择两个大素数,p 和q 。计算: n = p * q 然后随机选择加密密钥e,要求 e 和 ( p - 1 ) * ( q - 1 )互质。最后,利用Euclid 算法计算解密密钥d, 满足 e * d = 1 ( mod ( p - 1 ) * ( q - 1 ) ) 其中n和d也要互质。数e和n是公钥,d是私钥。两个素数p和q不再需要,应该丢弃,不要让任何人知道。 加密信息M(二进制表示)时,首先把M分成等长数据块 m1 ,m2,..., mi ,块长s,其中 s <=log2n, s 尽可能的大。对应的密文是: C=Me mod n ( a ) 解密时作如下计算: M=Cd mod n=(Me)d mod n= Med mod n ( b ) RSA 可用于数字签名,方案是用 ( a ) 式签名, ( b )式验证。(所有权: 毕业设计网 QQ:306826066)
目录
1. 引言 1 1.1. 课题的来源、意义和目标 1 1.2. 国内、外发展概况 2 1.3. 课题的技术概述 2 2. 系统需求分析 4 3. 总体概要设计和实施方案 5 3.1. 总体概要设计 5 3.1.1. 设计目标 5 3.1.2. 系统总体结构 5 3.2. 实施方案 6 3.2.1. 设计环境需求 6 3.2.2. 方案与实施步骤 7 4. 总体详细设计 8 4.1. 系统程序流程图 8 4.2. 各个模块详细设计 9 4.2.1. 参数定义 9 4.2.2. 文件加密和解密 11 4.2.3. 数据加密和解密 15 4.2.4. 文件签名与验证 18 4.3. 后台类的定义以及一些组件功能的实现 24 4.3.1. 类的整体结构 24 4.3.2. 各个类的具体定义和初始化如下: 25 (所有权: 毕业设计网 QQ:306826066) 4.3.3. 类中的数据类型和结构 28 4.3.4. 系统菜单的生成 29 4.3.5. AboutBox模块的实现 30 5. 结 论 33 5.1. 程序调试 33 5.2. 设计结果与讨论 33 致 谢 35 参考文献 36 |