公钥密码体制RSA算法的实现与应用.docVIP

公钥密码体制RSA算法的实现与应用.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
公钥密码体制RSA算法的实现与应用.doc

公钥密码体制RSA算法的实现与应用 第10卷第2期 1999年4月 指挥术学院Vo 公钥密码体制RSA算法的实现与应用 ±晓垡一,___一 (指挥技术学院研究生队) 王擎天 (指孬习i目制鬟丁 摘要基于公钥密码体制的RSA算法,蛤出了实现该算法的整个过程和结果,最后介绍了 该算法在数字签名,身份认证和密钢管理中的应用. 关键词RSA算法;数字签名; -_———__一●_—-- __一 分类号TP309 l976年,美国学者Diffie和Hellman发表了着名论文《密码学的新方向》.提出了建立公 开密钥密码体制(PublicKey)的新概念,当时他们还没有实现这种体制的具体算法,然而他 们的这种新思想吸日I了许多学者去探索.l978年,美国麻省理工学院(MIT)的研究小组成员 罗纳德?李维斯特(RonaldLRivest),阿迪?夏米尔(AdiShamir),兰纳?艾德曼(Leonard Adleman)提出了一种基于公开密钥密码体制的优秀加密算法——RsA算法.该算法以其较 高的保密强度经受住了2O年来各种攻击的考验,逐渐成为一种广为接受,最有希望的公钥密 码体制算法.RSA算法是一种分组密码体制算法,它的保密强度是建立在具有大素数因子的 合数,其因子分解是NP(NondeterministicPolynomia1)完全问题这一数学难题的基础上的,因 此RSA算法具有很强的保密性.RSA算法的提出被人们称为密码学发展史上的第二个里程 碑 1RsA算法的实现 1.1算法描述 为描述RsA算法,定义以下参数: 1)P和q为随机大素数(秘密的) 2)r=P×q(公开的) 3)欧拉函数(r)一(一1)(g一1)(秘密的) 4)——解密密钥(秘密的) 5)一一加密密钥(公开的) 6)x——明文(秘密的) 7)y——密文(公开的) 其中:s满足gcd(,(r))=1(最大公约数);尸j满足?尸?------1rood(r) 算法过程: 收槠日期:1998—12~o9 第一作者;男1974年生硕士研究生101416北京 栅 蝴 指挥技术学院1999 1)密钥的求取 选取两个随机大素数:P和口I 6.求r~pXq和欧拉函数(r)一(户一1)(g一1)} c.选取解密密钥S.,满足(?(r))=1 d.选取加密密钥R,使其满足S.?一1mod(r) 2)公布r和P?;将P,g和保密 3)加密 将明文x分块,块长为[O,r一1]对每块明文x进行加密运算: Y一x(roodr) 4)解密 对每块密文做解密运算:X=Y5(roodr),将墨还原成x 1.2RSA算法中的难点与技巧 1.2.1大数的运算 上百位大数之间的运算是实现RSA算法的基础,因此程序设计语言本身提供的加减乘除 及取模算法都不能使用,否则会产生溢出,必须重新编制算法.在编程中要注意进位和借位,并 定义几百位的大数组来存放产生的大数. 1.2.2素数的产生 Wilson定理(p一1)!一一1mod(户)是判别素数最基本的方法,但其涉及到阶乘运算, 计算量大,因此使用该定理来产生素数没有实用价值.目前,适用于RSA算法的最实用的办法 是概率测试法.该法的思想是随机产生一个大奇数,然后测试其是否满足条件,如满足,则该大 奇数可能是素数,否则是台数.素数定理(j=1说明素数有无穷多个,同时也说明 通过随机产生一个大奇数来判断其素性是具有实用性的.选用勒曼测试方法: 1)随机产生一个大奇数和一组数组nEi],其中max()=m,1lt;nEi]lt;n}(根据需要 自定,这里取20);初始化0 2)计算(Ⅱ[])mod(n); 3)若其值为1或一1,i=i+1,若i—,到5);否则到2); 4)若为其它值,则到1); 5)结束. 上述方法产生的素数我们称为伪素数,勒曼测试方法只能保证产生的大数不是素数的概 率是《{l.但当我们把取成较大的数值时,基本上就能保证产生的是素数. 1.2.3高次幂剩余的运算 要计算modp,因g,,P都是大数而不能采用先高次幂再求剩余的方法来处理,而要采 用平方取模的算法,即每一次平方或相乘后,立即取模运算,具体步骤如下: n.先把指数转化为二进制 1)初始化:?,6—0, 2)判断:如x=O,b,一,…dI,转至第六步; 3)判断:如lt;gt;2一l,一0 如()2=1,一1 第2期牛晓华,等:公钥密码体制RSA算法的实现与应甩 4)除法一[/2],—+1} 5)返回第二步; 6)输出6一一1.一do. b.[初始化3y=1; c.当i=,~1,…,1,0时,重复执行c1至C3{ c1—(); c2如一1,则+lt;gt;; c3返回c1. d.结束,即为所求结果. 1.2.4欧几里德算法 欧几里德算法可以迅速地找出给定的两个整数n和b的最大公因数gcd(n

文档评论(0)

czy2014 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档