题目:
from Crypto.Util.number import *flag = b'NSSCTF{******}' + b'1'*100p = getPrime(512)
q = getPrime(512)n = p*q
e = 65537
d = inverse(e, (p-1)*(q-1))dp = d % (p-1)m = bytes_to_long(flag)c = pow(m, e, n)print(f'n = {n}')
print(f'c = {c}')
print(f'dp = {dp}')'''
n = 79201858340517902370077926747686673001645933420450220163567700296597652438275339093680329918615445030212417351430952656177171126427547284822789947152085534939195866096891005587613262293569611913019639653984932469691636338705418303482885987114085769045348074530172292982433373154900841135911548332400167290083
c = 70109332985937768446301118795636999352761371683181615470371772202170324747707233792154935611826981798791499937601162039878070094663516868746240133223110650205575807753345252087103328657073552992431511929172241702073381723302143955977662087561904058172777520360991685289300855900793806183473523998422682944404
dp = 3098334089252415941833934532457314870210700261428241562420857845879512952043729097866485406309479489101668423603305497982177150304625615059119312238777275
'''
解题思路:
对于dp我们有dpe ≡ 1 (mod p−1)
解答:
from Crypto.Util.number import *
from gmpy2 import *n = 79201858340517902370077926747686673001645933420450220163567700296597652438275339093680329918615445030212417351430952656177171126427547284822789947152085534939195866096891005587613262293569611913019639653984932469691636338705418303482885987114085769045348074530172292982433373154900841135911548332400167290083
c = 70109332985937768446301118795636999352761371683181615470371772202170324747707233792154935611826981798791499937601162039878070094663516868746240133223110650205575807753345252087103328657073552992431511929172241702073381723302143955977662087561904058172777520360991685289300855900793806183473523998422682944404
dp = 3098334089252415941833934532457314870210700261428241562420857845879512952043729097866485406309479489101668423603305497982177150304625615059119312238777275
e = 65537for k in range(1, e):if (e * dp - 1) % k == 0:p = (e * dp - 1) // k + 1if n % p == 0:q = n // pd = invert(e, (p - 1) * (q - 1))m = powmod(c, d, n)breakprint(long_to_bytes(m))
#NSSCTF{just_dp_leak}1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111