题目:
很遗憾,这道题当时没做出来。
话不多说,直接开始,题目只给了一个式子,这里就命名为hint:
最开始我的想法是化为模q的形式,也就是:
然后就变成了:
接着就一直卡在这里动不了了,当时就没想着对模p那个方向,现在想想也就只有那个方向能解了吧,转换成模p的形式就是:
用二项式定理展开一看,其实除了最后一项之外,其余都含有p,那就变成了:
相当于这里就变成了是p的倍数了,或者说p整除,到这一步很容易就联想到p也整除n,那这个式子如果知道具体的值,求公因数不就出来了,那还得对这个式子进一步处理:
那就相当于:
回到刚才分析的那里,现在p既整除n,又整除,这两个都是已知,直接求公因数就有了,代码如下:
import gmpy2
from Crypto.Util.number import *
e = 65537
n =
c =
hint =
hint2 = pow(2024,n,n)
p = gmpy2.gcd(n,hint - hint2)
q = n // p
phi = (p-1)*(q-1)
d = gmpy2.invert(e,phi)
m = pow(c,d,n)
print(long_to_bytes(m))
flag来了: