跳转至

RSA共模:

附件.py:

from gmpy2 import *

from Crypto.Util.number import *


flag  = '***************'

p = getPrime(512)

q = getPrime(512)

m1 = bytes_to_long(bytes(flag.encode()))


n = p*q

e1 = getPrime(32)

e2 = getPrime(32)

print()

flag1 = pow(m1,e1,n)

flag2 = pow(m1,e2,n)

print('flag1= '+str(flag1))

print('flag2= '+str(flag2))

print('e1= ' +str(e1))

print('e2= '+str(e2))

print('n= '+str(n))



flag1= 100156221476910922393504870369139942732039899485715044553913743347065883159136513788649486841774544271396690778274591792200052614669235485675534653358596366535073802301361391007325520975043321423979924560272762579823233787671688669418622502663507796640233829689484044539829008058686075845762979657345727814280

flag2= 86203582128388484129915298832227259690596162850520078142152482846864345432564143608324463705492416009896246993950991615005717737886323630334871790740288140033046061512799892371429864110237909925611745163785768204802056985016447086450491884472899152778839120484475953828199840871689380584162839244393022471075

e1= 3247473589

e2= 3698409173

n= 103606706829811720151309965777670519601112877713318435398103278099344725459597221064867089950867125892545997503531556048610968847926307322033117328614701432100084574953706259773711412853364463950703468142791390129671097834871371125741564434710151190962389213898270025272913761067078391308880995594218009110313

python脚本

from gmpy2 import *
from Crypto.Util.number import *

flag1= 100156221476910922393504870369139942732039899485715044553913743347065883159136513788649486841774544271396690778274591792200052614669235485675534653358596366535073802301361391007325520975043321423979924560272762579823233787671688669418622502663507796640233829689484044539829008058686075845762979657345727814280
flag2= 86203582128388484129915298832227259690596162850520078142152482846864345432564143608324463705492416009896246993950991615005717737886323630334871790740288140033046061512799892371429864110237909925611745163785768204802056985016447086450491884472899152778839120484475953828199840871689380584162839244393022471075
e1= 3247473589
e2= 3698409173
n= 103606706829811720151309965777670519601112877713318435398103278099344725459597221064867089950867125892545997503531556048610968847926307322033117328614701432100084574953706259773711412853364463950703468142791390129671097834871371125741564434710151190962389213898270025272913761067078391308880995594218009110313

def egcd(a, b):
  if a == 0:
    return (b, 0, 1)
  else:
    g, y, x = egcd(b % a, a)
    return (g, x - (b // a) * y, y)
s = egcd(e1,e2)
s1 = s[1]
s2 = s[2]
m = pow(flag1,s1,n)*pow(flag2,s2,n) % n
# print(m)
flag = long_to_bytes(m)
print(flag)

求得NSSCTF{xxxxx**xxxxx}

评论