rsa算法例题详细,RSA算法例题

  rsa算法例题详细,RSA算法例题

  rsa公钥密码体制的原理是:根据数论,寻找两个大素数相对简单,但是对它们的乘积进行因式分解是极其困难的,所以乘积可以作为加密密钥公之于众。本文主要介绍RSA,examples,python的详细讲解,有需要的朋友可以参考一下。

  

目录
rsa详细讲解及实例及python算法原理算法描述案例手稿实现python运算m=71-c=15c=15-m=71正常rsa c-mm-c安全运算速度

  

rsa 详解及例题及python

  

算法原理

  RSA公钥密码体制的原理是:根据数论,寻找两个大素数是相对简单的,但是对它们的乘积进行因式分解是极其困难的,所以乘积可以作为加密密钥公开。

  

算法描述

  选择任意两个不同的大素数P和Q,计算乘积n=pqn: (n)=(p-1) (q-1)的欧拉函数 (n)。选择任意大整数E,满足gcd(e,(n))=1。用整数E作为加密密钥(注:gcd是最大公约数,E的选择是

  m:明文

  将明文m加密成密文c:c = m^e mod n

  将密文C解密成明文M:m = c^d mod n

  

案例手稿

  但是我开了计算器,不能算。数据真实有效。

  

实现python 运算

  与上一份数据手稿相同。

  

m=71 - c=15

  导入gmpy2

  e=13

  p=7

  q=11

  M=71 #明文

  n=p * q

  =(p-1)*(q-1)#求(n)

  D=gmp2.invert (e,phi) #解密索引d

  c=pow(m,e,n) # c=m^e模n

  打印(c) # 15

  

c=15 - m=71

  导入gmpy2

  e=13

  p=7

  q=11

  C=15 #密文

  n=p * q

  =(p-1)*(q-1)#求(n)

  D=gmp2.invert (e,phi) #解密索引d

  m=pow(c,d,n) # m=c^d模n

  打印(m) # 71

  

正常的rsa c-m

  导入gmpy2

  e=65537

  p=16435030890771245250471689347093882208680251377251841485619431897178309215967130919240891089151587177178171717191515177445454545454545431971971517574545454545431943545363631954

  5904826577379710370821510596437921027155767780096652437826492144775541221209701657278949

  q = 107494571486621948612091613779149137205875732174969005765729543731117585892506950289230919634697561179755186311617524660328836580868616958686987611614233013077705519528946490721065002342868403557070176752015767206263130391554820965931893485236727415230333736176351392882266005356897538286240946151616799180309

  c = 17210571768112859512606763871602432030258009922654088989566328727381190849684513475124813364778051200650944085160387368205190094114248470795550466411940889923383014246698624524757431163133844451910049804985359021655893564081185136250014784383020061202277758202995568045817822133418748737332056585115499621035958182697568687907469775302076271824469564025505064692884524991123703791933906950170434627603154363327534790335960055199999942362152676240079134224911013272873561710522794163680938311720454325197279589918653386378743004464088071552860606302378595024909242096524840681786769068680666093033640022862042786586612

  n = p * q

  phi = (p - 1) * (q - 1)

  d = gmpy2.invert(e, phi)

  # print(d)

  # d = 10095641463285806689688988669044958090788365778905483762638208789928575529502449849401292767726529997650439299015629157860588641396532350448192417234115775710546923180797320293516940576508757762754018567918113024001776672047516740167084526876904933632661036267682605889561715539758853760422969139832554919002326234307334716814878144233472982025457216787932684627988735853402622522302446460089411169271999550088279345136169249058325303590053665436848597082040492623325205128048625400148897314726782189085723532731019805440603017682798178125617958332012328823973231309306940239141155633610022544319334662491790481464305

  m = pow(c, d, n) # m = c^d mod n

  print(m)

  # m = 164244530130068579551298796969937831989529603092769

  

  

m->c

  

import gmpy2

  e = 65537

  p = 164350308907712452504716893470938822086802561377251841485619431897833167640001783092159677313093192408910634151587217774530424780799210606788423235161145718338446278412594875577030585348241677399115351594884341730030967775904826577379710370821510596437921027155767780096652437826492144775541221209701657278949

  q = 107494571486621948612091613779149137205875732174969005765729543731117585892506950289230919634697561179755186311617524660328836580868616958686987611614233013077705519528946490721065002342868403557070176752015767206263130391554820965931893485236727415230333736176351392882266005356897538286240946151616799180309

  m = 164244530130068579551298796969937831989529603092769

  n = p * q

  phi = (p - 1) * (q - 1)

  d = gmpy2.invert(e, phi)

  # print(d)

  # d = 10095641463285806689688988669044958090788365778905483762638208789928575529502449849401292767726529997650439299015629157860588641396532350448192417234115775710546923180797320293516940576508757762754018567918113024001776672047516740167084526876904933632661036267682605889561715539758853760422969139832554919002326234307334716814878144233472982025457216787932684627988735853402622522302446460089411169271999550088279345136169249058325303590053665436848597082040492623325205128048625400148897314726782189085723532731019805440603017682798178125617958332012328823973231309306940239141155633610022544319334662491790481464305

  c = pow(m, e, n) # c = m^e mod n

  print(c)

  # c=17210571768112859512606763871602432030258009922654088989566328727381190849684513475124813364778051200650944085160387368205190094114248470795550466411940889923383014246698624524757431163133844451910049804985359021655893564081185136250014784383020061202277758202995568045817822133418748737332056585115499621035958182697568687907469775302076271824469564025505064692884524991123703791933906950170434627603154363327534790335960055199999942362152676240079134224911013272873561710522794163680938311720454325197279589918653386378743004464088071552860606302378595024909242096524840681786769068680666093033640022862042786586612

  

  

安全性

  RSA的安全性依赖于大数分解,但是否等同于大数分解一直未能得到理论上的证明,也并没有从理论上证明破译。RSA的难度与大数分解难度等价

  RSA算法的保密强度随其密钥的长度增加而增强。但是,密钥越长,其加解密所耗用的时间也越长。因此,要根据所保护信息的敏感程度与攻击者破解所要花费的代价值不值得以及系统所要求的反应时间来综合考虑

  

  

运算速度

  由于进行的都是大数计算,使得RSA最快的情况也比DES慢上好几倍,无论是软件还是硬件实现。速度一直是RSA的缺陷。

  一般来说只用于少量数据加密。RSA的速度比对应同样安全级别的对称密码算法要慢1000倍左右

  到此这篇关于rsa详解及例题及python的文章就介绍到这了,更多相关rsa例题python内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: