RSA算法的C实现课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
RSA算法的C实现课程设计报告
课程设计报告
------------------RSA算法实现
院(系):
专业:
班级:
学生:
学号:
指导教师:
10月10日
目录
1.RSA算法介绍与应用现 (3)
2.算法原理 (3)
3.RSA算法数论基础 (4)
3.1.单向和陷门单向函数 (4)
3.2.同余及模运算 (4)
3.3.欧拉函数、欧拉定理和费尔马定理 (5)
3.4.乘法逆元及其求法…………………………………………..5.
4. RSA算法的各环节 (6)
4.1.RSA公钥加密解密概述 (6)
4.2. RSA签名算法 (6)
4.3.大数运算处理 (7)
4.4.大素数的产生 (8)
5. RSA的安全性 (8)
6. 代码实现: (10)
7. RSA算法结果分析 (15)
7.1.主界面初始化 (15)
7.2.设置密钥 (15)
7.3.对明文加密 (16)
7.4.对密文解密 (17)
8. 总结与展望 (17)
9. 参考文献 (18)
1.RSA算法介绍与应用现状
RSA公开密钥加密算法自20世纪70年代提出以来,已经得到了广泛认可和应用。发展至今,电子安全领域的各方面已经形成了较为完备的国际规范。RSA作为最重要的公开密钥算法,在各领域的应用数不胜数。RSA在硬件方面,以技术成熟的IC应用于各种消费类电子产品。
RSA在软件方面的应用,主要集中在Internet上。加密连接、数字签名和数字证书的核心算法广泛使用RSA。日常应用中,有比较著名的工具包Open SSL(SSL,Security Socket Layer,是一个安全传输协议,在Internet上进行数据保护和身份确认。Open SSL是一个开放源代码的实现了SSL及相关加密技术的软件包,由加拿大的Eric Yang等发起编写的。Open SSL应用RSA实现签名和密钥交换,已经在各种操作系统得到非常广泛的应用。另外,家喻户晓的IE浏览器,自然也实现了SSL协议,集成了使用RSA技术的加密功能,结合MD5和SHA1,主要用于数字证书和数字签名,对于习惯于使用网上购物和网上银行的用户来说,几乎天天都在使用RSA技术。
RSA更出现在要求高度安全稳定的企业级商务应用中。在当今的企业级商务应用中,不得不提及使用最广泛的平台j2ee。事实上,在j2se的标准库中,就为安全和加密服务提供了两组API:JCA和JCE。 JCA (Java Cryptography Architecture)提供基本的加密框架,如证书、数字签名、报文摘要和密钥对产生器;JCA由几个实现了基本的加密技术功能的类和接口组成,其中最主要的是
java.security包,此软件包包含的是一组核心的类和接口,Java中数字签名的方法就集中在此软件包中。JCE(Java Cryptography Extension) 在JCA的基础上作了扩展,JCE也是由几个软件包组成,其中最主要的是javax.crypto包,此软件包提供了JCE加密技术操作API。javax.crypto中的Cipher类用于具体的加密和解密。在上述软件包的实现中,集成了应用RSA算法的各种数据加密规范(RSA算法应用规范介绍参见:,这些API内部支持的算法不但仅只有RSA,可是RSA是数字签名和证书中最常见的),用户程序能够直接使用java标准库中提供的API进行数字签名和证书的各种操作。
单机应用程序使用RSA加密尚比较少见,例如使用RSA加密任意一个文件。
RSA算法能够简单叙述如下:
<密钥生成>
取素数p,q,令n=p×q.
取与(p-1)×(q-1)互素的整数e,
由方程d×e=1 (mod (p-1)×(q-1))解出d,
二元组(e,n)作为公开密钥,
二元组(d,n)作为私有密钥.
<加密解密>
b=a e mod n,c=b d mod n.