单素
n = 171731371218065444125482536302245915415603318380280392385291836472299752747934607246477508507827284075763910264995326010251268493630501989810855418416643352631102434317900028697993224868629935657273062472544675693365930943308086634291936846505861203914449338007760990051788980485462592823446469606824421932591
e = 65537
ct = 161367550346730604451454756189028938964941280347662098798775466019463375610700074840105776873791605070092554650190486030367121011578171525759600774739890458414593857709994072516290998135846956596662071379067305011746842247628316996977338024343628757374524136260758515864509435302781735938531030576289086798942
单素顾名思义是单个素数
与普通的RSA的区别就是phi
这里的phi=n-1(这里因为是单个素数,n就是p)
from Cryptodome.Util.number import getPrime, inverse, bytes_to_long, long_to_bytes, GCD
from gmpy2 import gmpy2n = 171731371218065444125482536302245915415603318380280392385291836472299752747934607246477508507827284075763910264995326010251268493630501989810855418416643352631102434317900028697993224868629935657273062472544675693365930943308086634291936846505861203914449338007760990051788980485462592823446469606824421932591
# 这里n=n-1
e = 65537
ct = 161367550346730604451454756189028938964941280347662098798775466019463375610700074840105776873791605070092554650190486030367121011578171525759600774739890458414593857709994072516290998135846956596662071379067305011746842247628316996977338024343628757374524136260758515864509435302781735938531030576289086798942phi=n-1
# 只有一个素数,phi(p)=p-1
d=gmpy2.invert(e,(n-1))
flag=pow(ct,d,n)
print(long_to_bytes(flag))
b'crypto{0n3_pr1m3_41n7_pr1m3_l0l}'