ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:73.28KB ,
资源ID:13555568      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/13555568.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(安全算法设计论文Word文件下载.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

安全算法设计论文Word文件下载.docx

1、第四,详述了RSA数字签名的设计与实现,主要实现的模块包括RSA密钥的产生(一对公钥和私钥),RSA加密算法和解密算法的实现,消息摘要MD的生成以及利用RSA算法实现数字签名和签名的验证;第五,对该系统进行了整体的测试和分析改进;第六,分析了RSA数字签名的安全性,指出了RSA数字签名的发展方向。关键词: RSA算法;加密; 解密;RSA数字签名目 录基于RSA的数字签名的设计 1一. 绪论 11.1 研究背景 11.2 本课题的研究意义 1二. RSA算法和RSA数字签名算法的基本概念和原理 22.1 RSA算法的基本概念 22.2 RSA算法的基本原理 3三. RSA数字签名的设计与实现

2、33.1 RSA数字签名的总体设计 33.1.1 RSA数字签名所需实现的功能 33.1.2 本软件的总体要求和设计 43.2 各部分的设计实现 43.2.1 密钥产生的实现 43.2.2 产生消息摘要的设计实现 83.2.3 数字签名的设计实现 8四. 结果展示 9五. 结论 9参考文献 10基于RSA的数字签名的设计一. 绪论1.1 研究背景随着电子信息技术的迅速发展,人类已步入信息社会。但是由于整个社会形成了一个巨大的计算机网络,任何一个计算机网络出现的安全问题,都会影响整个国家的网络安全,所以信息安全、计算机网络安全问题已引起了人类的高度重视。无论是在局域网还是在广域网中,都存在着自然

3、和人为等诸多因素的脆弱性和潜在威胁。故此,网络的安全措施应是能全方位地针对各种不同的威胁和脆弱性,这样才能确保网络信息的保密性、完整性和可用性。针对网络安全的威胁主要有三方面:(1)人为的无意失误;(2)人为的恶意攻击;(3)网络软件的漏洞和“后门”。 现代密码学已成为信息安全技术的核心,密码学是以研究通信安全保密的学科,即研究对传输信息采用何种秘密的变换以防止第三者对信息的窃取。密码学包括两个分支:密码编码学和密码分析学。密码编码学主要研究对信息进行交换,以保护信息在信道的传递过程中不被他人窃取、解密和利用的方法,而密码分析学则与密码编码学相反,它主要研究如何分析和破译密码。两者之间既相互对

4、立又相互促进。密码体制的分类有很多,其中一种是根据加密算法和解密算法所使用的密钥是否相同,可以将密码体制分为对称密钥密码体制(单钥密码体制)和非对称密钥密码体制(公钥密码体制),这两种密码体制各有自己的长处和短处,因此现在采用了两种的混合体,如PGP。1.2 本课题的研究意义随着电子商务的发展,网络上资息的伪造和欺骗成为非常重要的问题。在计算机通信系统中,维护电子文档的安全也成为至关重要和非常敏感的问题。为保护信息的安全,数字签名应运而生金的电子交换日益频繁,如何防止信,它是现代密码学主要研究的内容之一。目前关于数字签名的研究主要集中点是基于公钥密码体制的数字签名。在公钥密码体制中,解密和加密

5、密钥不同,解密和加密可分离,通信双方无须事先交换密钥就可建立起保密通信,因此它较好地解决了传统密码体制在网络通信中出现的问题。手写签名的每一项业务都是数字签名的潜在用场。数字签名可以提供数据完整性、真实性和不可否认性。因而当需要对某一实体进行认证、传输具有有效性的密钥以及进行密钥分配时,便可以借助数字签名来完成任务。数字签名技术在身份识别和认证、数据完整性、抵赖等方面具有其它技术无法替代的作用,它在军事、电子商务和电子政务等领域有着极广泛的应用。而在公钥体制中,RSA是一个较为完善的公钥密码算法,不仅能够同时用于加密和数字签名,而且易于理解和操作,是被广泛研究的公钥密码算法。因此,基于RSA的

6、数字签名具有较强的研究性和实际应用意义。二. RSA算法和RSA数字签名算法的基本概念和原理二.1 RSA算法的基本概念RSA公开密钥加密算法自20世纪70年代提出以来,已经得到了广泛认可和应用。发展至今,电子安全领域的各方面已经形成了较为完备的国际规范。RSA作为最重要的公开密钥算法,在各领域的应用数不胜数。RSA在硬件方面,以技术成熟的IC应用于各种消费类电子产品。RSA在软件方面的应用,主要集中在Internet上、加密连接、数字签名和数字证书的核心算法广泛使用RSA。RSA算法是一种公钥密码算法,实现RSA算法包括生成RSA密钥,加密和解密数据。RSA算法是第一个能同时用于加密和数字签

7、名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价。即RSA的重大缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数人士倾向于因子分解不是NP-C问题。RSA的缺点主要有:A)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。B)分组长度太大,为保证安全性,n 至少也要 600 bits二.2 RSA算法的基本原理1) 随机选择两个不同的素数p和q,它们的宽度是密钥宽度的二分之一

8、。2) 计算出p和q的乘积n 。3) 在2和(n)之间随机选择一个数e , e 必须和(n)互素,整数e用做加密密钥(其中(n)=(p-1)*(q-1)。4) 从公式ed 1 mod (n)中求出解密密钥d 。5) 得公钥(e ,n ), 私钥 (d , n) 。6) 公开公钥,但不公开私钥。7) 将明文P (假设P是一个小于n的整数)加密为密文C,计算方法为:C = Pe mod n8) 将密文C解密为明文P,计算方法为:P=Cd mod n然而只根据n和e(不是p和q)要计算出d是不可能的。因此,任何人都可对明文进行加密,但只有授权用户(知道d)才可对密文解密。三. RSA数字签名的设计与

9、实现三.1 RSA数字签名的总体设计三.1.1 RSA数字签名所需实现的功能在本软件中需要实现的功能有以下几个:(1)生成RSA密钥:公钥ke=(e,n),私钥kd=(d,n);(2)利用MD5算法计算出消息摘要MD;(3)数字签名的实现:用私钥d对消息摘要进行加密计算(RSA算法中的加密方法);(4)验证数字签名:用公钥e对数字签名进行解密计算(RSA算法中的解密方法),得到的解密结果与(2)步计算出的消息摘要比较,如果两个消息摘要一样则签名成功。三.1.2 本软件的总体要求和设计本软件的总体要求有:1)按要求生成非对称密钥公钥和私钥;2)按任意写入的的消息字符串(明文信息)生成所需要的消息

10、摘要MD;3)在本设计中用产生的私钥d根据RSA算法的加密原理对所生成的消息摘要进行加密运算,得到数字签名;4)在本设计中用产生的公钥e根据RSA算法的解密原理对所加密的消息摘要即数字签名进行解密运算,得到对应的消息摘要(在本设计中标示的为解密信息),比较两个消息摘要,验证数字签名者的身份的真实与否;5)提示信息完整、操作舒适、图形界面雅观。本软件的总体设计都是基于C+的开发环境,采用的是Microsoft Visual c+ 6.0的运行环境。三.2 各部分的设计实现三.2.1 密钥产生的实现在密钥的产生部分中起决定性作用的是素数的选择, 对随机数作素性检测,若通过则为素数;否则增加一个步长

11、后再做素性检测,直到找出素数。素性检测采用Fermat测试。这个算法的理论依据是费尔马小定理:如果m是一个素数,且a不是m的倍数,那么根据费尔马小定理有:a m-1=1 ( mod m)。 实际应用时:a m-1 = 1 ( mod m) a m = a ( mod m) a= a m ( mod m), 因此对于整数m,只需计算a m ( mod m),再将结果与a比较,如果两者相同,则m为素数。选取a=2,则a一定不会是任何素数的倍数。根据所选的素数的不同产生不同的密钥。密钥的理论产生模块流程图如图3-1所示:产生任意素数p和q计算n=p*q 计算ou_la=(p-1)(q-1) 选择e作

12、为公钥 计算d作为私钥 密钥产生的部分代码实现: CString str; /第一步 产生任意素数 GeneratePrimeNumbers(); /第二步 计算 n=p*q m_n = m_Prime1 * m_Prime2; /第三步 0=(p-1)(q-1) m_Undef = (m_Prime1-1) * (m_Prime2-1); /第四步 选择e SelectE(); /第五步 计算D CalculateD(); /显示公钥和私钥 /(1) 公钥 KU=e,n str.Format(%d, %d,m_e,m_n); m_public_key.SetWindowText(str);

13、/(2) 私钥KU=d,n,m_d,m_n); m_private_key.SetWindowText(str); / 选择一个 使 与 m_Undef互素/选择e的函数的实现SelectE() CString str;for(float i=2;i100000;i+) if(IsRelativePrime(float)m_Undef,(float)i) m_e=(long)i; return; /互为素数的函数的实现IsRelativePrime(float X,float Y) float R;/输入: X,Y if(XY)/如果X较小则交换两个值 X=X+Y; Y=X-Y; X=X-Y; /在这时X总是比Y大 for(;) if(Y=0) break; R=fmod(X,Y); X=Y; Y=R;if(X != 1) return false; else return true;/互素/ 计算D的函数的实现CalculateD() float d; long d_dash; for(float k=1;kk+) d=(m_Undef*k+1)/m_e; d_dash = (long)(m_Undef*k+1)/m_e); if(d = d_dash) m_d=

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1