题目:
import gmpy2
import libnum
import uuid
flag = "flag{" + str(uuid.uuid4()) + "}"
p1=libnum.generate_prime(512)
p2=libnum.generate_prime(512)
q=libnum.generate_prime(512)
n1 = p1*q
n2 = p2*q
e = 65537
m = libnum.s2n(flag)
c = pow(m, e, n1)
c = pow(c, e, n2)
print("n1=",n1)
print("n2=",n2)
print("c = %d" % c)
n1= 112195810916540080322147439926227396143212393897802748315680472594558799029534779775271008383395518877821731665835634678401568947090873486395149732298263354390016098054044806873918905132987476054844987306027761534181303517220621441518324585179823673969558995936609127852864523298992887582577499388515853491497
n2= 88790778909576415179886515155102706867392114102025869119607085747213169987518671350564945859497428869691105671005065514502569621779087935963985402699443777504557102322233961859704858649565850173575303253987936764681800925819067778299779802828174121237253793292384258971774320773014257476125209237140654413403
c = 19647439887967754316157422330583606402127105210372646776764535749031369881820582266218364147451110571815245627056959200592243347187192275957037050544596379425308334804317654052804631325074606329044062003909217973554395506825664531754330672646733161604197903412638795574568160569255819918812228129649469350313
解题脚本:
import libnum
import gmpy2
e= 65537
n1= 112195810916540080322147439926227396143212393897802748315680472594558799029534779775271008383395518877821731665835634678401568947090873486395149732298263354390016098054044806873918905132987476054844987306027761534181303517220621441518324585179823673969558995936609127852864523298992887582577499388515853491497
n2= 88790778909576415179886515155102706867392114102025869119607085747213169987518671350564945859497428869691105671005065514502569621779087935963985402699443777504557102322233961859704858649565850173575303253987936764681800925819067778299779802828174121237253793292384258971774320773014257476125209237140654413403
c = 19647439887967754316157422330583606402127105210372646776764535749031369881820582266218364147451110571815245627056959200592243347187192275957037050544596379425308334804317654052804631325074606329044062003909217973554395506825664531754330672646733161604197903412638795574568160569255819918812228129649469350313
#求最大公约数
q=gmpy2.gcd(n1,n2)
p1=n1//q
p2=n2//q
phi_n1=(q-1)*(p1-1)
phi_n2=(q-1)*(p2-1)
#求逆元d
d1=libnum.invmod(e,phi_n1)
d2=libnum.invmod(e,phi_n2)
c1 = pow(c,d2,n2)
m = pow(c1,d1,n1)
print(m)
#数字转字节,转字符串
print(libnum.n2s(int(m)).decode())
1.png
得到flag{a4784f09-d5fb-4d96-ab7a-9eb824688dfd}