题目:
from Crypto.Util.number import *
flag = b'******'
p = getPrime(256)
q = getPrime(256)
n = (p**3) * q
e = 65537
phi = (p-1)*(q-1)
m = bytes_to_long(flag)
c = pow(m, e, n)
print(f'p = {p}')
print(f'q = {q}')
print(f'e = {e}')
print(f'c = {c}')
'''
p = 12619364646350071089635796716461679301872001967564982827833632430873494442534428668859429302449338790675346706322372677784666054335807627059078056498414319
q = 13322927061392445497402624722516808065211145754534293884502271579117803667441576605927350599378174495246568884282242045254605422350585661723940229995177937
e = 65537
c = 15465133012902139459487131261965491000237056560984000040324069556721021254341772102190320457225791447337860827124406488751474558096126362025171561058734512919315843087231750296347098541381113794815070076413276456616422283934665169867901393320973478107577604594668931583705821397506114844795063174102968326369535144101199866539275331789831156767721220232699760821590124823842628713622402083331293384193630563740627964762784902719911113691372935443754971969715241786949432740019175543224696366208368505734261742118548309842837131002387524558348954368682111938543982145779317988132542588200997701489333748146762081124503
'''
解题思路:
与常规的RSA计算phi值不同,这里计算phi值的时候,要考虑p被立方的情况
解答:
from Crypto.Util.number import *
p = 12619364646350071089635796716461679301872001967564982827833632430873494442534428668859429302449338790675346706322372677784666054335807627059078056498414319
q = 13322927061392445497402624722516808065211145754534293884502271579117803667441576605927350599378174495246568884282242045254605422350585661723940229995177937
e = 65537
c = 15465133012902139459487131261965491000237056560984000040324069556721021254341772102190320457225791447337860827124406488751474558096126362025171561058734512919315843087231750296347098541381113794815070076413276456616422283934665169867901393320973478107577604594668931583705821397506114844795063174102968326369535144101199866539275331789831156767721220232699760821590124823842628713622402083331293384193630563740627964762784902719911113691372935443754971969715241786949432740019175543224696366208368505734261742118548309842837131002387524558348954368682111938543982145779317988132542588200997701489333748146762081124503
n = (p**3)*q
phi = (p**2)*(p-1)*(q-1)
d = inverse(e, phi)
m = pow(c, d, n)
print(long_to_bytes(m))
# 79-4157-11ed-93f