RSA算法的C实现课程设计报告

上传人:汽*** 文档编号:465631185 上传时间:2023-04-24 格式:DOC 页数:18 大小:147.50KB
返回 下载 相关 举报
RSA算法的C实现课程设计报告_第1页
第1页 / 共18页
RSA算法的C实现课程设计报告_第2页
第2页 / 共18页
RSA算法的C实现课程设计报告_第3页
第3页 / 共18页
RSA算法的C实现课程设计报告_第4页
第4页 / 共18页
RSA算法的C实现课程设计报告_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《RSA算法的C实现课程设计报告》由会员分享,可在线阅读,更多相关《RSA算法的C实现课程设计报告(18页珍藏版)》请在金锄头文库上搜索。

1、 课程设计报告-RSA算法实现院 (系): 专 业:班 级: 学 生:学 号: 指导教师:2012年10月10日 目 录1. RSA算法介绍与应用现.32. 算法原理.33. RSA算法数论基础.43.1.单向和陷门单向函数.43.2.同余及模运算.43.3.欧拉函数、欧拉定理和费尔马定理.53.4.乘法逆元及其求法.5.4. RSA算法的各环节.64.1.RSA公钥加密解密概述.64.2. RSA签名算法64.3.大数运算处理.74.4.大素数的产生.85. RSA的安全性.86. 代码实现:.107. RSA算法结果分析.157.1.主界面初始化157.2.设置密钥.157.3.对明文加密

2、167.4.对密文解密178. 总结与展望.179. 参考文献181.RSA算法介绍与应用现状RSA公开密钥加密算法自20世纪70年代提出以来,已经得到了广泛认可和应用。发展至今,电子安全领域的各方面已经形成了较为完备的国际规范。RSA作为最重要的公开密钥算法,在各领域的应用数不胜数。RSA在硬件方面,以技术成熟的IC应用于各种消费类电子产品。RSA在软件方面的应用,主要集中在Internet上。加密连接、数字签名和数字证书的核心算法广泛使用RSA。日常应用中,有比较著名的工具包Open SSL(SSL,Security Socket Layer,是一个安全传输协议,在Internet上进行数

3、据保护和身份确认。Open SSL是一个开放源代码的实现了SSL及相关加密技术的软件包,由加拿大的Eric Yang等发起编写的。Open SSL应用RSA实现签名和密钥交换,已经在各种操作系统得到非常广泛的应用。另外,家喻户晓的IE浏览器,自然也实现了SSL协议,集成了使用RSA技术的加密功能,结合MD5和SHA1,主要用于数字证书和数字签名,对于习惯于使用网上购物和网上银行的用户来说,几乎天天都在使用RSA技术。RSA更出现在要求高度安全稳定的企业级商务应用中。在当今的企业级商务应用中,不得不提及使用最广泛的平台j2ee。事实上,在j2se的标准库中,就为安全和加密服务提供了两组API:J

4、CA和JCE。 JCA (Java Cryptography Architecture)提供基本的加密框架,如证书、数字签名、报文摘要和密钥对产生器; JCA由几个实现了基本的加密技术功能的类和接口组成,其中最主要的是java.security包,此软件包包含的是一组核心的类和接口,Java中数字签名的方法就集中在此软件包中。JCE(Java Cryptography Extension) 在JCA的基础上作了扩展,JCE也是由几个软件包组成,其中最主要的是javax.crypto包,此软件包提供了JCE加密技术操作API。javax.crypto中的Cipher类用于具体的加密和解密。在上述

5、软件包的实现中,集成了应用RSA算法的各种数据加密规范(RSA算法应用规范介绍参见: http:/ ,这些API内部支持的算法不仅仅只有RSA,但是RSA是数字签名和证书中最常用的),用户程序可以直接使用java标准库中提供的API进行数字签名和证书的各种操作。单机应用程序使用RSA加密尚比较少见,例如使用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.2.算法原理1选择两

6、个不同的大素数p、q (目前两个数的长度都接近512bit是安全的);2. 计算n = p*q。 3. 计算n的欧拉函数 t=(p-1)(q-1)。4. 选择整数e作为公钥,使e与t互素,且1e t。5. 用欧几里得算法计算d作为私钥,使d*e=1 mod t。6. 加密:C=Me mod n7. 解密:MCd mod n=(Me)d mod n= Med mod n。3.RSA算法数论基础RSA算法的数学理论基础在密码学中需要使用到许多数学理论,例如数论、信息论、复杂度理论等, 它们是设计密码系统及协议不可或缺的工具,其中数论是密码学中(尤其是公开密钥密码系统中)最重要的数学基础,因此有必要

7、对有关数论理论做一介绍。下面介绍RSA算法的数学基础知识。3.1单向和陷门单向函数RSA的安全性主要取决于构造其加密算法的数学函数的求逆困难性,这同大多数公钥密码系统一样(譬如EIGamal算法就是基于离散对数问题的困难性),我们称这样的函数为单向函数。单向函数不能直接用作密码体制,因为如果用单向函数对明文进行加密,即使是合法的接收者也不能还原出明文,因为单向函数的逆运算是困难的。与密码体制关系更为密切的陷门单向函数,即函数及其逆函数的计算都存在有效的算法,而且可以将计算函数的方法公开。单向和陷门单向函数的概念是公钥密码学的核心,它对公钥密码系统的构造非常重要,甚至可以说公钥密码体制的设计就是

8、陷门单向函数的设计。定义2. 1:令函数f是集合A到集合B的映射,以f:AB表示。若对任意x1x2,x1,x2A,有f(x1)f(x2),则称f为1一l映射,或可逆函数。定义2. 2:一个可逆函数厂,若它满足: 1对所有XA,易于计算f(x); 2对“几乎所有xA,由f(x)求x“极为困难”,以至于实际上不可能做到。则称f为单向函数 (One-way function) 上述定义中的“极为困难”是对现有计算机能力和算法而言的,Massey称此为视在困难性,相应的函数称之为视在单向函数。以此来和本质上的困难性相区分。目前,还没有人能够从理论上证明单向函数是存在的。3.2同余及模运算同余:假定有三

9、个整数a,b,n(n0),当我们称a在模n时与b同余,是指当且仅当a与b的差为n的整数倍,即a-b=kn,其中k为任一整数。若a与b在模n中同余, 我们可写为a b(mod n)或n l(a-b)。剩余类(Residue Class):很明显地,利用同余概念,所有整数在模n中被分成n个不同的剩余类;为n所整除的数(即余数为0)为一剩余类,被n所除余数为1的数为另一剩余类,余2的数又为一剩余类,以此类推。完全剩余系(Complete Set of Residues):若将每一剩余类中取一数为代表,形成一个集合,则此集合称为模n的完全剩余系,以Zn表示。很明显地,集合(0,l, 2,n-1为模n的

10、一完全剩余系。从0到n-1的整数组成的集合构成了模n的“完全剩余系”。这意味着,对每一个整数a,它的模n剩余是从0到n-1之间的某个整数。所谓运算a mod n表示求a被n除的余数,成为模运算。既约剩余系(Reduced Set of Residues):在模n的完全剩余系中,若将所有与n 互素的剩余类形成一个集合,则称此集合为模n的既约剩余系,以Zn表示。例如n=10时,0,1,2,3,4,5,6,7,8,9)为模10的完全剩余系;而1,3,7,9)为模10的既约剩余系。3.3欧拉函数、欧拉定理和费尔马定理欧拉函数(n):是一个定义在正整数上的函数,其值等于序列0,1,2,3, n-1 中与

11、n互素的数的个数。即fn为模n既约剩余系中所有元素的个数。由定义知,当P是素数时, (p)=P-1。定理21欧拉定理:若m,a为正整数,有g c d(a,m)=l(g c d,Greatest Common Divisor,最大公约数),则a(m) (mod m)。其中m称为欧拉函数,它是比m小但与m互素的正整数个数。欧拉定理也有一种等价形式:a(m)+1 =a(mod m)。 定理22设P和q是两个不同的素数,n=pq,则(n)=(p-1)(q-1),对任意的xZn及任意的非负整数k,有x k(n)+1x (mod n)。定理3费尔马定理:如果P是素数,且g c d(m ,p)=l(可表示为

12、(m , p)=1), 则mp-1l(mod p),费尔马定理还存在另一种等价形式:如果P是素数,m是任意正整数,则mpm(mod p)。对于素数P来说, (p)=p-1,所以费尔马定理实际是欧拉定理的一个推论。费尔马定理和欧拉定理及其推论在构成了RSA算法的主要理论基础。3.4乘法逆元及其求法乘法逆元的定义:若a bl(mod n),则称b为a在模n的乘法逆元,b可表示为a-1。利用Euclid(欧几里德)算法(辗转相除法)求乘法逆元:己知a及n且(a ,n) =1,求a a l=1(mod n)。欧几里德算法是古希腊数学家欧几里德给出的求两个自然数的最大公约数的方法,如果(a,n)=1,则

13、b一定存在。首先介绍利用欧几里德算法求g c d(a,n)的方法,再介绍求乘法逆元的方法。令r0=n,r l=a,an,利用辗转相除法可得r0=r1+g1+r2 0r2 r l r1=r2g2+r3 0r3r 2 : :rj-2=r j-l g j-1+rj 0r jr j-1 rm-3=rm-2 gm-2+rm-1 0rm-1rm-2 rm-2=rm-1 gm-1+rm 0r mrm-1 rm-1= r m gm 则r m为a及n的最大公因子。(欧几里德算法求g c d的主要概念在于:若c=d g + r, 则(c,d)=(d,r)。因此在上述算法中,(a,n)=(r0,r1) =(r l,r2)= (r(m-1),r m)=(r m,o)=r m。可以通过举例说明利用欧几里德算法求逆元的方法,如:求1001b=lmod 3837, b是1001关于模3837的乘法逆元。因为(1001,3837)=l,而3837=31001+834 1001=1834+1 67 834=4167+166 167=1 166+1所以l=167166=167-(834-4167)=5167834 =5(1001834)一834 =51001-6834 =51001-6(383731001)

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > 总结/计划/报告

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