之前写题遇到过dp泄露题型,但一直没搞懂原理,脚本也是借鉴(抄袭)的别人的,今天好好学一下,自己推导一遍(敲起来麻烦,手写了)。
from Crypto.Util.number import *
import gmpy2
for i in range(1,e):
if (dp*e-1)%i == 0:
if (n%((dp*e-1)//i+1)) == 0:
p = (dp*e-1)//i+1
q = n // p#注意都是整除
phi_n = (p-1)*(q-1)
d = gmpy2.invert(e,phi_n)
m = pow(c,d,n)
print(long_to_bytes(m))