RSA算法描述.docVIP

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

2.RSA算法 RSA算法需要以下相关的数学概念: 素数:素数是一个比1大,其因子只有1和它本身,没有其它数可以整除它的数。素数是无限的。例如,2,3,5,7……等。 两个数互为素数:指的是它们除了1之外没有共同的因子。也可以说这两个数的最大公因子是1。例如,4和9,13和27等。 模运算:如A模N运算,它给出了A的余数,余数是从0到N-1的某个整数,这种运算称为模运算。 RSA加密算法的过程如下: (1)取两个随机大素数p和q(保密) (2)计算公开的模数r=pq(公开) (3)计算秘密的欧拉函数? (r) =(p-1)(q-1)(保密),两个素数p和q不再需要,应该丢弃,不要让任何人知道。 (4)随机选取整数e,满足gcd(e, ? (r))=1(公开e,加密密钥) (5)计算d,满足de≡1(mod ? (r))(保密d,解密密钥,陷门信息) (6)将明文x(其值的范围在0到r-1之间)按模为r自乘e次幂以完成加密操作,从而产生密文y(其值也在0到r-1范围内) y=xe (mod r) (7)将密文y按模为r自乘d次幂,完成解密操作 x=yd (mod r) 下面用一个简单的例子来说明RSA公开密钥密码算法的工作原理。 取两个素数p=11,q=13,p和q的乘积为r=p×q=143,算出秘密的欧拉函数? (r)=(p-1)×(q-1)=120,再选取一个与? (r)=120互质的数,例如e=7,作为公开密钥,e的选择不要求是素数,但不同的e的抗攻击性能力不一样,为安全起见要求选择为素数。对于这个e值,可以算出另一个值d=103,d是私有密钥,满足e×d=1 mod ? (r),其实7×103=721除以120确实余1。欧几里德算法可以迅速地找出给定的两个整数a和b的最大公因数gcd(a,b),并可判断a与b是否互素,因此该算法可用来寻找解密密钥。 120=7×17+1 1=120-7×17 mod 120=120-7×(-120+17) mod 120==120+7×103 mod 120 (n,e) 这组数公开,(n,d)这组数保密。 设想需要发送信息x=85。利用(n,e)=(143,7)计算出加密值: y= xe (mod r)=857 mod 143=123 收到密文y=123后,利用 (n,d)=(143,103)计算明文: x=yd (mod r) =123103mod 143=85 加密信息x(二进制表示)时,首先把x分成等长数据块 x1 ,x2,..., xi ,块长s,其中 2s ≤ n,s尽可能的大。对应的密文是: yi = xie ( mod r ) 解密时作如下计算: xi = yid ( mod r ) RSA算法中的难点有以下几点: (1)大数的运算 上百位大数之间的运算是实现RSA算法的基础,因此程序设计语言本身提供的加减乘除及取模算法都不能使用,否则会产生溢出,必须重新编制算法。在编程中要注意进位和借位,并定义几百位的大数组来存放产生的大数。 (2)素数的产生 Hadamard证明,当X变得很大时,从2到X区间的素数数目π(X)与X/ln(X)的比值趋近于1,即: 如果在2到X之间随机选取一个整数,其为素数的概率大约为1/ln(X)。对于1024位的模数r=pq,p和q将选取为512位的素数。一个随机选取的512位整数为素数的概率大约为1/ln2512? 1/355。 目前,适用于RSA算法的最实用的素数生成办法是概率测试法。该法的思想是随机产生一个大奇数,然后测试其是否满足一定的条件,如满足,则该大奇数可能是素数,否则是合数,经过充分多次运行该算法,把合数判断为素数的概率可以降低到任何所期望的值以下。如solovay和strassen的简明素性概率检测法。目前也存在多项式时间的确定性算法来判断一个数是否为素数。 (3)高次幂剩余的运算 要计算xe mod r,因x、e、r都是大数而不能采用先高次幂再求剩余的方法来处理,而要采用平方取模的算法,即每一次平方或相乘后,立即取模运算。设e可表示为: e = bk 2k + bk-1 2k-1 + ... + bi 2i + ... + b2 22 + b1 2 + b0   xe算法: Square-and-Multiply(x,e,r) Z=1 For i=k downto 0 Do z=z*z mod r if bi=1 then z=z*x mod r Return(z)   RSARSA的攻击的困难程度不比大数分解更难,因为一旦分解出r的因子p、q,就可以攻破RSA密码体制。对RSA的攻击是否等同于大数分解一直未能得到理论上的证明,因为没能证明破解RSA就一定需要作大数分解。目前,RSA的一些变种算法已被证明等价于大数分解。不管怎样,

文档评论(0)

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

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

1亿VIP精品文档

相关文档