题目:
from Crypto.Util.number import *
flag = b'G0D{******}'
p1 = getPrime(512)
q = getPrime(512)
p2 = getPrime(512)
n1 = p1*q
n2 = p2*q
e = 65537
m = bytes_to_long(flag)
c1 = pow(m, e, n1)
c2 = pow(m, e, n2)
print(f'n1 = {n1}')
print(f'n2 = {n2}')
print(f'e = {e}')
print(f'c1 = {c1}')
print(f'c2 = {c2}')
'''
n1 = 112153336865617750437809782696467932287870094252213075074603860758308185106430578884682741652419683372332999940119094641008622939164709463113698813517738092854992358842138860980034084367772428755636909209117353345907455629222277198419006584270439171320574881583435738855410115446273963234852612519180029235973
n2 = 121246047527049253719344528783639775563703266230755977344146451212291964518449527231091867848587956827377382110599297040472697003882992924211443343278543106746375181686380890089909518822225004023711046236713296970094991220276729667164508697956434536038209317101031692762750606202665407703049174151205078236953
e = 65537
c1 = 84893778313968587276148527279477486829081410817274813809317530946963857901552735397955531547798349495186142760355002051336905506417857698605048154752286614500948931443390679666554077637294535483265412783008308896515942017828443658486742987430289470674707414886598842880981709086487902786819723961695193758974
c2 = 63242837380218204617489251230001931327380204058226447638945773112040666909500922868388873584884629079787380009090789005391196162609995771063786895387934970164678597060844198934043636736697885747274402705439104400069316699528071241155518909948683584408833746228980549189012536859611366623305366871817499827303
'''
解题思路:
两组数中e相同,n,c不同,n1和n2的最大公因数即为p,之后就能求出q,d,继而求出m
解答:
from Crypto.Util.number import *
from gmpy2 import *
n1 = 112153336865617750437809782696467932287870094252213075074603860758308185106430578884682741652419683372332999940119094641008622939164709463113698813517738092854992358842138860980034084367772428755636909209117353345907455629222277198419006584270439171320574881583435738855410115446273963234852612519180029235973
n2 = 121246047527049253719344528783639775563703266230755977344146451212291964518449527231091867848587956827377382110599297040472697003882992924211443343278543106746375181686380890089909518822225004023711046236713296970094991220276729667164508697956434536038209317101031692762750606202665407703049174151205078236953
e = 65537
c1 = 84893778313968587276148527279477486829081410817274813809317530946963857901552735397955531547798349495186142760355002051336905506417857698605048154752286614500948931443390679666554077637294535483265412783008308896515942017828443658486742987430289470674707414886598842880981709086487902786819723961695193758974
c2 = 63242837380218204617489251230001931327380204058226447638945773112040666909500922868388873584884629079787380009090789005391196162609995771063786895387934970164678597060844198934043636736697885747274402705439104400069316699528071241155518909948683584408833746228980549189012536859611366623305366871817499827303
q = gcd(n1, n2)
p1 = n1 // q
phi = (p1-1)*(q-1)
d = invert(e, phi)
m = pow(c1, d, n1)
print(long_to_bytes(m))
#G0D{5eff6eb0fcd72fcbde1eee04e1b14ac9}