已知n,c1,e1,c2,e2
比如:

from gmpy2 import *
from Crypto.Util.number import *m=bytes_to_long(flag)e1=7001
e2=3079
p = getPrime(1024)
q = getPrime(1024)
n=p*qc1=pow(m,e1,n)
c2=pow(m,e2,n)
print("c1=",c1)
print("c2=",c2)
print("n=",n)# c1= 1179153009397216598435898664913013906721360772936512662052101517459316764759394123779110824706919596160059480389897297984413854798129231534050088239302915080096868653406434933153504253796756127783150591979031377593664991914139444617462866102693114255049799366851349147045348109837232977242072799358648664465097080210523116817706588355666253552059897922840796198643551171891950926861434055056878817543255295477956358349041368662583962423973344907977264141171007831950656784252421648269386781811809187335222160920871727444855984188440076944890976216752295980633208084446503718437524250279216357185194942302140230922610
# c2= 10437325197718377420665183751052604683752972545290976240469209685271037477384754993053810382998433228103616101449726385851997935766943643332857266437709868815387917630328854036452459233777621967075482861046941947395697941956244624621510141249205563291092459018609413863700860900988791233252119983715164060405299920622406494732525133298295868214045353696012049378668692522893346357415390844076187674965329077645927257855907625431886978472656450813208155595570774901953086683946195721505972522014286767402309561349994937363566840449420931256390206713457347605809974472962163669963069609049342951183497365499358676894242
# n= 25612176987355339470206103342017662848275198016350363396290279785817927653026648758571670952455756798264924232136700974988254325434407111109544897931117811122565438908979983475543301447654711984022075358842944791188230852439351709302741572945625100401411546677530277065785352496834220675976664934261809940721664515331727470708170990247623590880857777126947437063425952974351809046512144535059244718953470066327907760202072544755669135299495948865125668296451196466853694738895439804955733917030945042274083320229375058008923529536808540906589588764953755183612320358911230528598709712821599904510988266080790297066857

原理:
e1和e2互质的情况下,由拓展欧几里得定理
e1x+e2y=1
此时 c1x*c2y=me1*x*me2*y=m(modn)
根据这个原理来写解密脚本

from gmpy2 import *
from Crypto.Util.number import *e1=7001
e2=3079
c1= 1179153009397216598435898664913013906721360772936512662052101517459316764759394123779110824706919596160059480389897297984413854798129231534050088239302915080096868653406434933153504253796756127783150591979031377593664991914139444617462866102693114255049799366851349147045348109837232977242072799358648664465097080210523116817706588355666253552059897922840796198643551171891950926861434055056878817543255295477956358349041368662583962423973344907977264141171007831950656784252421648269386781811809187335222160920871727444855984188440076944890976216752295980633208084446503718437524250279216357185194942302140230922610
c2= 10437325197718377420665183751052604683752972545290976240469209685271037477384754993053810382998433228103616101449726385851997935766943643332857266437709868815387917630328854036452459233777621967075482861046941947395697941956244624621510141249205563291092459018609413863700860900988791233252119983715164060405299920622406494732525133298295868214045353696012049378668692522893346357415390844076187674965329077645927257855907625431886978472656450813208155595570774901953086683946195721505972522014286767402309561349994937363566840449420931256390206713457347605809974472962163669963069609049342951183497365499358676894242
n= 25612176987355339470206103342017662848275198016350363396290279785817927653026648758571670952455756798264924232136700974988254325434407111109544897931117811122565438908979983475543301447654711984022075358842944791188230852439351709302741572945625100401411546677530277065785352496834220675976664934261809940721664515331727470708170990247623590880857777126947437063425952974351809046512144535059244718953470066327907760202072544755669135299495948865125668296451196466853694738895439804955733917030945042274083320229375058008923529536808540906589588764953755183612320358911230528598709712821599904510988266080790297066857s0,s1,s2=gcdext(e1, e2)
m=pow(c1,s1,n)*pow(c2,s2,n)%n
print(long_to_bytes(m))
#b'flag{blog_csdn_net_Yjlay}'

模不互素:
e1x+e2y=gcd(e1,e2)
此时 c1x*c2y=me1*x*me2*y=mgcd(e1,e2)(modn)
脚本:

from gmpy2 import *
from Crypto.Util.number import *e1=30021
e2=30027
c1= 5509994255169422875829291683107889237316544099781534085309720916923266437211484011108672035283485500778248058445206234324432000263618755718589049689416709967400659339436395460875111625484366459496076837997769563615219248987694291947338077866051785524004820221175440221068606440552211689221174357073016932077136708861183582870058564212280765851295674317190361785463793087855702049025515630056237168554799307290937385316682362305223107642608035975738826820381383203644516687511975961044681964482714772305734126009437250894201309865208538447592281608987030293711390307945187298067684591952227950016822851023369327635243
c2= 8555730740740947421931579299626578204599605647082041027737832076989674777472779000925140666558464858824118115788637462757683725162976669533296515252410477599601711477080461362079839226891218770802037516006972073213104302189420612379103828959382341150312202986540454955304059145220531421801372380157368244382467569935721164096059819084181384048990277786168176650119213137399378980004585229622559290094696373854966466708460478914357628501836088387565894474085820869960959502571187467802530850954567790741128006356534964853865905829105940934100354271043073046964445413436879153148476801199254119055616616262550630953046
n= 21535113688551477287141944228633846625182908760599600397220966863039265552905880085143766119290875863553393432263588217382843929375134958240392890332811456736986923188887235871334513105575383800138859662813911751929357551876077947962909515903174405738417480110013264907071870183029249161230991297983938811631393130330270572172325574620900893015893130793097648182607432601448505800743072042327362505704728395874335272027877283765070818847936191379306627928011152693305893550364617167628192848279285566993414924569340778417090195347684021058603084661441343460444170329264487418066555711468077326584081186019932241120583
s0,s1,s2=gcdext(e1, e2)
print(s0)
m=pow(c1,s1,n)*pow(c2,s2,n)%n
m=iroot(m,s0)
print(long_to_bytes(m[0]))

练习:

e1*e2= 59653
n= 16282992590526808657350657123769110323293742472515808696156540766049532922340638986423163288656942484229334024198335416611687418341772216996129634991032127943095069143600315325916614910606100091970611448259491799589221889445348698100959509165262891180065554743420149168801638644589921791426690475846945077068114953844817073866258377206796158690941199907230130273657375727245023893672164113928189304228859412794067127721813637080447782673535996272223836127807775157150041664783263093604946744032762535394974814371771505843653571711445892969781888188805943142126747365056482511805191315474848971218180999336497135314654469910566730389765499603897685968204361422568601724914800686608628299192714352963744010136960423806304763245890692476493455775025753944860040020178234660999290356849442926396627701588938894161779071628447041006556793933320976506046066961014953196791133933438500843139378274786265308568167479880984705152809744111382599071097574636570516674122980589207824718402382459624138317432883921371298272851693734695823787102433937406420318428888224246291987404818042038201886113203158444083427668636941
c1= 15508846802476602732219982269293312372397631462289816533805702700260237855119470146237752798828431803179124957728439730580289236458563016332461725094295883030444173189424666004498359269921250956676320570006883951982237098373954348825003467019876101438948387668628518937831820206221522881150831840296199498447304138839838135264071071817072965792514115711621435317078108239744829134467948386247696344881838815422262901903767893118533887779588425725845820071451782420200868341564360095012698956683395031351656817392008005928265838760875070634021907630535014959579709368637536268853337028760833769278841040734409299575870823873616769863828516877971432999417800417684146077045836940988096634144368727546539602310924702126212020003620219218637652874119299016382481718659448722433296761241365473608283436835986184098161365747699791248301452334044327014782249692551362625130537300221641910570569803981153117200694806974917501061411963827755822672178568783269357196133308719688843211664095412087717861154226475203597889635926903753481174280305996204091501578865951177135086807765873529089048911740160698421289371229606
c2= 7038544062804420883340530319534054090343999593726615071597649914714397773106261660516938820194721330117082799104642674913839235601210294807255855747823709326405317366422536981850436536877639492293904186333547681934006229055311359852552059601531864585759120757265084674695094298158389804437120173997679271166467086009884419942249925895393890707373985126949313101489352481737754459985522998334847972008827503987883850638250024631354158979424169551575287515128697843093987592614974905262077415255065744686115142126350167970451060399517705823298929164793769442986603707135790651560436497661713972277808036463771768932747376668116480068277125579165831615220097562066809632099809702980365194257899499384219864311379004681733844738981954144617140038448109869114888325128710654235506628539192955240723379334422880368605005772426413018696218105733457019400100498450734710865067764542737004071080719589912326985050985424145053072697267879019954400205613591419766583673115931337146967400159040252514654983240188915104134405655336152730443436887872604467679522955837013574944135975481174502094839012368918547420588186051

脚本如下:

from gmpy2 import *
from Crypto.Util.number import *n= 16282992590526808657350657123769110323293742472515808696156540766049532922340638986423163288656942484229334024198335416611687418341772216996129634991032127943095069143600315325916614910606100091970611448259491799589221889445348698100959509165262891180065554743420149168801638644589921791426690475846945077068114953844817073866258377206796158690941199907230130273657375727245023893672164113928189304228859412794067127721813637080447782673535996272223836127807775157150041664783263093604946744032762535394974814371771505843653571711445892969781888188805943142126747365056482511805191315474848971218180999336497135314654469910566730389765499603897685968204361422568601724914800686608628299192714352963744010136960423806304763245890692476493455775025753944860040020178234660999290356849442926396627701588938894161779071628447041006556793933320976506046066961014953196791133933438500843139378274786265308568167479880984705152809744111382599071097574636570516674122980589207824718402382459624138317432883921371298272851693734695823787102433937406420318428888224246291987404818042038201886113203158444083427668636941
c1= 15508846802476602732219982269293312372397631462289816533805702700260237855119470146237752798828431803179124957728439730580289236458563016332461725094295883030444173189424666004498359269921250956676320570006883951982237098373954348825003467019876101438948387668628518937831820206221522881150831840296199498447304138839838135264071071817072965792514115711621435317078108239744829134467948386247696344881838815422262901903767893118533887779588425725845820071451782420200868341564360095012698956683395031351656817392008005928265838760875070634021907630535014959579709368637536268853337028760833769278841040734409299575870823873616769863828516877971432999417800417684146077045836940988096634144368727546539602310924702126212020003620219218637652874119299016382481718659448722433296761241365473608283436835986184098161365747699791248301452334044327014782249692551362625130537300221641910570569803981153117200694806974917501061411963827755822672178568783269357196133308719688843211664095412087717861154226475203597889635926903753481174280305996204091501578865951177135086807765873529089048911740160698421289371229606
c2= 7038544062804420883340530319534054090343999593726615071597649914714397773106261660516938820194721330117082799104642674913839235601210294807255855747823709326405317366422536981850436536877639492293904186333547681934006229055311359852552059601531864585759120757265084674695094298158389804437120173997679271166467086009884419942249925895393890707373985126949313101489352481737754459985522998334847972008827503987883850638250024631354158979424169551575287515128697843093987592614974905262077415255065744686115142126350167970451060399517705823298929164793769442986603707135790651560436497661713972277808036463771768932747376668116480068277125579165831615220097562066809632099809702980365194257899499384219864311379004681733844738981954144617140038448109869114888325128710654235506628539192955240723379334422880368605005772426413018696218105733457019400100498450734710865067764542737004071080719589912326985050985424145053072697267879019954400205613591419766583673115931337146967400159040252514654983240188915104134405655336152730443436887872604467679522955837013574944135975481174502094839012368918547420588186051
yue=[11,17,29,11*11,11*17,11*29,17*29,11*17*29,11*11*17,11*11*29]for e1 in range(10):for x in range(10):e2=int(59653//yue[e1])# print(e2,end=",")s0,s1,s2=gcdext(yue[e1], e2)m=pow(c1,s1,n)*pow(c2,s2,n)%nm=m+x*nm=iroot(m,s0)if m[1]:flag=str(hex(m[0]))# print(flag)if flag[2:12]=='666c61677b':#flag{开头print(long_to_bytes(m[0]))break

【ctf学习】RSA共模攻击相关推荐

  1. 关于RSA共模攻击e1,e2不互素的解法

    最近做密码学rsa的题目,搜集了很多情况下的rsa解题脚本,记录一下 import gmpy2 import rsa from binascii import a2b_hex import libnu ...

  2. RSA共模攻击(包括原理)

    RSA工作原理 RSA的工作原理,RSA涉及的几个参数 明文=>m 密文=>c 模n,负责计算出两个质数p和q p和q计算欧拉函数值Φ(n) 欧拉函数Φ(n)=> Φ(n)=(p-1 ...

  3. CTF-RSA共模攻击 和 非共模攻击解密脚本

    给定两个不同的n的时候一定要看看n1,n2有没有最大公约数(素数),如果有,那么该最大公约数就是两者共同的p给定两个相同的n的时候,那就要考虑共模攻击了 共模攻击 有两组RSA密码 提取公钥信息 fr ...

  4. CTF-RSA共模攻击

    1.共模攻击原理 一号选手和二号选手对同一段明文进行加密. 如果此时有一个攻击者,同时监听了一号选手和二号选手接收到的密文,.因为模数不变,以及所有的公钥都是公开的,那么利用共模攻击,就可以在不知道, ...

  5. [密码学] RSA同模攻击与选择密文攻击

    文章目录 同模攻击 选择密文攻击 RSA-OAEP 同模攻击 选择密文攻击 RSA-OAEP

  6. CTF学习笔记一——RSA加密

    RSA公开密钥密码体制是一种使用不同的加密密钥与解密密钥,"由已知加密密钥推导出解密密钥在计算上是不可行的"密码体制. 在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息, ...

  7. 低解密指数攻击_CTF中RSA的一些攻击思路

    本文为看雪论坛优秀文章看雪论坛作者ID:丿feng本文简略总结了前人的一些RSA攻击思路,代码或来源于网上或本人原创.并已在GitHub上开源,github地址:https://github.com/ ...

  8. [CTF密码学]RSA相关题目解题方法与python脚本总结(附例题)

    目录 RSA算法概述 思路一.分解n得到p,q 例题:BUUCTF:[WUSTCTF2020]babyrsa 思路二.低加密指数攻击(e很小) 例题:BUUCTF DangrousRSA 思路三.低指 ...

  9. CTF 中RSA的常见解析

    0x01 前言 这里就不讨论数论的基础了,进行RSA的题目解答,至少要懂得基本的数论知识的,如果不了解数论的基本知识的话,网上相关内容还是挺多的. RSA基于一个简单的数论事实,两个大素数相乘十分容易 ...

最新文章

  1. java8 wordcount_Spark2.x与Java8下WordCount示例
  2. 每天一道LeetCode-----将数字集转成字母集,计算有多少种转换方式
  3. django怎么在html添加变量,如何在django项目的html模板中创建局部变量?
  4. primefaces_Primefaces向导组件示例
  5. SetWindowLong代码设置窗体borderStyle风格 TOOLWINDOW
  6. 结构梁配筋最牛插件_结构设计经验总结
  7. 计算机网络面试需要掌握的知识点汇总
  8. 天猫八大策略人群京东十大靶向人群简介
  9. VS 2013编译xvid
  10. MEMS陀螺仪传感器的原理
  11. 丁火生于未月命理分析_日主丁、未月出生五行喜用分析-丁日未月生《晶灵八字算命》...
  12. 卷积神经网络的可视化(基于keras)
  13. 疫情之下,企业和员工到底该何去何从?
  14. Linux下vim的复制、粘贴操作
  15. Docker中的资源分配详解
  16. IDEA右下角git图标上消失,如何重现?
  17. 服务器系统升级方案,服务器系统升级方案
  18. 医疗器械经营与服务类毕业论文文献有哪些?
  19. [创业谈]从推广角度看网站分类及其他
  20. Android TraceView分析日志

热门文章

  1. JS实现最美的3D宇宙效果
  2. 为什么要做巧推整站快速排名SEO优化?
  3. storyboard搭建项目_用Storyboard实例化控制器:
  4. codeforces1153F Serval and Bonus Proble【期望DP】
  5. uniapp 自定义弹层时,底部页面滚动而弹层不能滚动
  6. 如何减缓液晶拼接屏带来的眼睛疲劳
  7. module和package是什么
  8. 【BZOJ】 2049 SDOI洞穴探险 【乱搞】
  9. web前端颜色配色大全
  10. 2019-CS224N-Assignment 1: Exploring Word Vectors