wustctf2021 Crypto RSA1

描述

from Crypto.Util.number import bytes_to_long, getPrime
from secret import flag
p, q = getPrime(1024), getPrime(1024)
n = p * q
e = 0x10001
s = pow(1314*p - 520*q, n - p - q, n)
c = pow(bytes_to_long(flag), e, n)
print(f'n = {n}')
print(f's = {s}')
print(f'c = {c}')
# n = 26305215103655644423271873654270896239286789695124090349749665534703077917412304839568833642664450313935099298310980853882272879981733372730292018544572625316902809164514982172181951319743072017697845536018391193871280565807620618786757590917994266113737303548654644579447152708491947981939693209377062932887079053535685222915049638973744785910187846488048054614595896905717548173503097932486976548606688284094985163387830871173351156872303901802063874643159872076045421856161697020709841563253543301088673347562874178275457662923268303751458373213379823091743254295392098852050657389100668196543581156089543387981749
# s = 4323761888398018609852335503896306767680254689118307249919076945474100280053222216117890335097280655812579700210142850972114032619375512508094444700268269861295454361479936323488734938967486887087065985770337167952405916865514342667568344884512919390473013721005783345127779614050256684329541419938215219111638334871769224566807758669615177139619330644265349270609231736366888506999373399354453570974856230273436956657673552797254044789898850371608837651642705304346761776584170067536342839950077554921714223414452726231759701672899981770205900654174771977192152231671555687060576625055995576371428030016472160229195
# c = 18524879875046454765780419291902161505187119049317257440202645362184543856980037891446139747396472606884190295519693050825702398302375035356073354030439092479076493350280491879942676232543272035009619776448668367631674751270025422471697604807309328948811730211796077194562605273068248003067084062604953180981092602825269082443194821795267533259542345280789423885313715011198756408238675212294964169231866750121782891392974982538883759460499654964916672646713561365268497621669918260512318121987464087203488943192447244656120553657904643768811055634526867642121977282747786019413676386087742587120310706285467632914627

今天刚刚学了欧拉定理,运用到这题,结果寄了,还是不会用,最后还是学长救的我,我的涵神!!

利用欧拉定理求1314*p - 520*q

 所以EXP,也是引用学长的wp

from gmpy2 import *
from libnum import *
from sympy import Symbol, solve
n = 26305215103655644423271873654270896239286789695124090349749665534703077917412304839568833642664450313935099298310980853882272879981733372730292018544572625316902809164514982172181951319743072017697845536018391193871280565807620618786757590917994266113737303548654644579447152708491947981939693209377062932887079053535685222915049638973744785910187846488048054614595896905717548173503097932486976548606688284094985163387830871173351156872303901802063874643159872076045421856161697020709841563253543301088673347562874178275457662923268303751458373213379823091743254295392098852050657389100668196543581156089543387981749
s = 4323761888398018609852335503896306767680254689118307249919076945474100280053222216117890335097280655812579700210142850972114032619375512508094444700268269861295454361479936323488734938967486887087065985770337167952405916865514342667568344884512919390473013721005783345127779614050256684329541419938215219111638334871769224566807758669615177139619330644265349270609231736366888506999373399354453570974856230273436956657673552797254044789898850371608837651642705304346761776584170067536342839950077554921714223414452726231759701672899981770205900654174771977192152231671555687060576625055995576371428030016472160229195
c = 18524879875046454765780419291902161505187119049317257440202645362184543856980037891446139747396472606884190295519693050825702398302375035356073354030439092479076493350280491879942676232543272035009619776448668367631674751270025422471697604807309328948811730211796077194562605273068248003067084062604953180981092602825269082443194821795267533259542345280789423885313715011198756408238675212294964169231866750121782891392974982538883759460499654964916672646713561365268497621669918260512318121987464087203488943192447244656120553657904643768811055634526867642121977282747786019413676386087742587120310706285467632914627
s = invert(s, n)
p = Symbol('p')
q = Symbol('q')
p, q = solve([p*q-n, 1314*p-520*q-s], [p, q])[1]
p = int(p)
q = int(q)
e = 0x10001
d = invert(e, (p-1)*(q-1))
print(n2s(int(pow(c, d, n))))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值