【密码学RSA】互求最大公约数得到p

1.题目给出了n,c,e:

n1:
19869526284752088148939972354773627021440824533894698351471306514507074380861900899337746265984127203745503431163626292927194075402561350642083535708084259061401774944942303487139743123454945186086440751466038047046765032004612150970950848719541561716848748565998085623961955973126154183160606975887904970483534623474557395741848672541199629461822557952290762508281829069777324330110007319971403723161807001865803082053555594485323704726330461596656583724637363487772306707788883455850088111877624554616608867713229641664259944189686715214749600476932872970837208412021167149814446448621276008478685199626589491072103
n2:
25494295697375473321252857899221625231822688935999690596959123132795394181801545650716478462630917517506821455499594187037125131674991934561225560148196194018158902673788583445646149997813802656755830524568566221253331430322174085820622392657174862705225294401371342412006513883557841523218761694411840682545681595615026193508601218931383774737152556284656604091573294546995759637708895860241171374764821181665739070177811943750571655444733267642280846124366191147994563232179869914470170731679510812971919415202103015857987687003943346843882948365208988093225179089845716159576436292039301229587968394908153377614733
n3:
24083785064060535511405832100999131194723125484592241443513012423397355653850614506890799766453569227901046951201644550086548283776506959932283450074399478803879861810508053141216986657521156549846033127516719666165353558057348585298770026625402727254268738716111765712229988016409935512639504223436904404985662178706065468520653194859312444315980012906189755591458006421168438274937569567997346149935394749041225143388079047804446371550593668411818554928761054839047518144771287796898138519724264989403370698748387992284824609014990318797065771102162067784368870360937616207885202090285325524585099648483673921730461
e:
65537
c1:
6539804048047557815141482917417693725807559194770347972204604201835527457672990917777090485646244334945990407671840051209765314745265407945790748751926619881027320018791645830034051168775561447504658500779797243613196578253480984242951410622136704053385605780434319608065678532928890417999557902155066390955856957741474738673866210755503615696316729427644942191500200749714767228429390741528542442378680308285285581785700738948053282062582143368540424608248916941150853062270786707125180149849561160498338732304909604269485281529049915406127174551318245378003521902473791390417452836137175877037114618874373135449373
c2:
24711937469673074548897423145692836896076785324540777350486490402150426688364046647173270084375613193777298127411165102117880509907862180384455451137118948899229218560975415693135785055187619528235788445407286043790074139893082980121487516980182720228252348348341253668878576678033766820948782611431802143288245370696180224257916404836720405563643274847074280484462792856619595395342734972129413376568485370109868430749664814544057733196926907746147944441351103267663544158693913681996381415022972214194508614869558267408364583458776356280657582621319898467454650942923480777976181539825363542798226112640816571625085
c3:
15194896408422329349097203922984853539796539042396962682928825971639634289915198422526326699329221743935756075832684757156104224403096789177888915888790372996186864868789904311364598941890579199097275770150167924962104169815778269068808139194191084491234769445814413965811841852418714420595102451833188863426675614856326169365067436560482404384456791121052021790125294462638764703163172896622687008944536337112985412723093557710269680319322392550882893019792045009403259290732356071247859307688862775413212889975009217976243917113012068908828077088593164525817183467671913093855316041182221108152893068637787554643712

2.思路:通过求两个n的最大公约数,来计算c1,c2,c3的明文。一共有三段flag,通过修改

n1=19869526284752088148939972354773627021440824533894698351471306514507074380861900899337746265984127203745503431163626292927194075402561350642083535708084259061401774944942303487139743123454945186086440751466038047046765032004612150970950848719541561716848748565998085623961955973126154183160606975887904970483534623474557395741848672541199629461822557952290762508281829069777324330110007319971403723161807001865803082053555594485323704726330461596656583724637363487772306707788883455850088111877624554616608867713229641664259944189686715214749600476932872970837208412021167149814446448621276008478685199626589491072103
n2=25494295697375473321252857899221625231822688935999690596959123132795394181801545650716478462630917517506821455499594187037125131674991934561225560148196194018158902673788583445646149997813802656755830524568566221253331430322174085820622392657174862705225294401371342412006513883557841523218761694411840682545681595615026193508601218931383774737152556284656604091573294546995759637708895860241171374764821181665739070177811943750571655444733267642280846124366191147994563232179869914470170731679510812971919415202103015857987687003943346843882948365208988093225179089845716159576436292039301229587968394908153377614733
n3=24083785064060535511405832100999131194723125484592241443513012423397355653850614506890799766453569227901046951201644550086548283776506959932283450074399478803879861810508053141216986657521156549846033127516719666165353558057348585298770026625402727254268738716111765712229988016409935512639504223436904404985662178706065468520653194859312444315980012906189755591458006421168438274937569567997346149935394749041225143388079047804446371550593668411818554928761054839047518144771287796898138519724264989403370698748387992284824609014990318797065771102162067784368870360937616207885202090285325524585099648483673921730461
e=65537
c1=6539804048047557815141482917417693725807559194770347972204604201835527457672990917777090485646244334945990407671840051209765314745265407945790748751926619881027320018791645830034051168775561447504658500779797243613196578253480984242951410622136704053385605780434319608065678532928890417999557902155066390955856957741474738673866210755503615696316729427644942191500200749714767228429390741528542442378680308285285581785700738948053282062582143368540424608248916941150853062270786707125180149849561160498338732304909604269485281529049915406127174551318245378003521902473791390417452836137175877037114618874373135449373
c2=24711937469673074548897423145692836896076785324540777350486490402150426688364046647173270084375613193777298127411165102117880509907862180384455451137118948899229218560975415693135785055187619528235788445407286043790074139893082980121487516980182720228252348348341253668878576678033766820948782611431802143288245370696180224257916404836720405563643274847074280484462792856619595395342734972129413376568485370109868430749664814544057733196926907746147944441351103267663544158693913681996381415022972214194508614869558267408364583458776356280657582621319898467454650942923480777976181539825363542798226112640816571625085
c3=15194896408422329349097203922984853539796539042396962682928825971639634289915198422526326699329221743935756075832684757156104224403096789177888915888790372996186864868789904311364598941890579199097275770150167924962104169815778269068808139194191084491234769445814413965811841852418714420595102451833188863426675614856326169365067436560482404384456791121052021790125294462638764703163172896622687008944536337112985412723093557710269680319322392550882893019792045009403259290732356071247859307688862775413212889975009217976243917113012068908828077088593164525817183467671913093855316041182221108152893068637787554643712

import gmpy2
import libnum

p=gmpy2.gcd(n1,n2)
q=n1//p
c=c1
n=p*q
phi_n=(p-1)*(q-1)
#求逆元
d=libnum.invmod(e,phi_n)
m=pow(c,d,n)
print(m)
#数字转字节,转字符串
print(libnum.n2s(int(m)))

需要修改的地方:

3.解出flag,flag{n0_CRT_4ndnO_facTOR_db_bUT_gcD_1s_r1ght!}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值