RSA算法和RSA数字签名算法的实现..doc

RSA算法和RSA数字签名算法的实现..doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
RSA算法和RSA数字签名算法的实现 摘要 RSA算法是一种公钥密码算法.实现RSA算法包括生成RSA密钥,用RSA加密规则和解密规则处理数据。RSA数字签名算法利用RSA算法实现数字签名。本文详述了RSA算法的基本原理, RSA加密算法的实现以及如何利用RSA实现数字签名. 关键字 RSA算法, 数字签名, 公开密钥, 私人密钥, 加密, 解密 中图分类号 TP301 一、引言 随着网络技术的飞速发展,信息安全性已成为亟待解决的问题。公钥密码体制中,解密和加密密钥不同,解密和加密可分离,通信双方无须事先交换密钥就可建立起保密通信,较好地解决了传统密码体制在网络通信中出现的问题。另外,随着电子商务的发展,网络上资金的电子交换日益频繁,如何防止信息的伪造和欺骗也成为非常重要的问题。数字签名可以起到身份认证、核准数据完整性的作用。目前关于数字签名的研究主要集中基于公钥密码体制的数字签名。 公钥密码体制的特点是:为每个用户产生一对密钥(PK和SK);PK公开,SK保密;从PK推出SK是很困难的;A、B双方通信时,A通过任何途径取得B的公钥,用B的公钥加密信息。加密后的信息可通过任何不安全信道发送。B收到密文信息后,用自己私钥解密恢复出明文。 公钥密码体制已成为确保信息的安全性的关键技术。RSA公钥密码体制到目前为止还是一种认可为安全的体制。本文详述了RSA算法和用RSA算法实现数字签名的理论,以及它们在实际应用中的实现。 二、RSA算法和RSA数字签名算法的理论描述 1 RSA算法 RSA算法的理论基础是一种特殊的可逆模幂运算。 设n是两个不同奇素数p和q的积,即:n=pq, ((n)=(p-1)(q-1)。 定义密钥空间 k={(n,p,q,d,e)|n=pq,p和q是素数,de(1 mod ((n),e为随机整数}, 对每一个k=(n,p,q,d,e), 定义加密变换为 Ek(x)=xb mod n,x(Zn; 解密变换为 Dk(x)=ya mod n,y(Zn,Zn为整数集合。 公开n和b,保密p,q和a. 为证明加密变换Ek和解密变换 Dk满足Dk(Ek(x))=x,这里不加证明的引用下面两个定理: 定理1(Euler)对任意的a(Zn*,有a((n)(1 mod n,其中Zn*={x(Zn|gcd(x,n)=1},((·)表示Euler函数。 定理2 设p和q是两个不同的素数,n=pq, ((n)=(p-1)(q-1),对任意的x(Zn及任意的非负整数k,有 xk((n)+1(x mod n. 现在来证明RSA算法的加密变换和解密变换的正确性。 证明: 对于加密变换Ek和解密变换Dk。因为ab(1 mod ((n),所以可设ab=t((n)+1,t是整数且t(1。对于任意的x(Zn,有Dk(Ek(x))(Dk(xb) ((xb)a(xt((n)+1(x mod n.因此解密过程是正确的。 2 RSA数字签名算法 RSA数字签名算法的过程为:A对明文m用解密变换作: s( Dk (m)=md mod n,其中d,n为A的私人密钥,只有A才知道它;B收到A的签名后,用A的公钥和加密变换得到明文,因: Ek(s)= Ek(Dk (m))= (md)e mod n,又 de(1 mod ((n)即de=l((n)+1,根据欧拉定理m((n)=1 mod n,所以Ek(s)=ml((n)+1=[m((n)]em=m mod n。若明文m和签名s一起送给用户B,B可以确信信息确实是A发送的。同时A也不能否认送给这个信息,因为除了A本人外,其他任何人都无法由明文m产生s.因此RSA数字签名方案是可行的。 但是RSA数字签名算法存在着因计算方法本身同构造成签名易被伪造和计算时间长的弱点,因此实际对文件签名前,需要对消息做MD5变换。 MD5函数是一种单向散列函数,它将任意长度的消息压缩成128位的消息摘要。应用MD5的单向性(即给定散列值,计算消息很难)和抗碰撞性(即给定消息M,要找到另一消息M’ 并满足两者的散列值很难),可以实现信息的完整性检验。另外该函数的设计不基于任何假设和密码体制而直接构造,执行的速度快,是一种被广泛认可的单向散列算法。 三、RSA算法的实现 RSA算法的实现分为:生成密钥,加密,解密。 1 数据结构 RSA密码系统的安全性依赖于大数分解的难度,一般建议用户选择的素数p和q至少为100位,则n=pq是至少为200位的十进制数。因此实现RSA算法有必要定义大数的数据结构如图一所示。 typedef struct { unsigned long int bn[MAX_LENGTH];

文档评论(0)

tiangou + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档