天命:没什么好说的,拿代码当公式背吧兄弟们
from gmpy2 import *
from Crypto.Util.number import *
c1=223220352756632370416468937
n=2270807881588501146
e1=11187289
c2=18702010045187
e2=9647291
# 扩展欧几里得算法
# r是e1和e2的最大公约数,以及对应的x,y值
r, s1, s2 = gcdext(e1,e2) # 计算s1,s2
# 使用中国剩余定理合并两个密文
m = (powmod(c1,s1,n) * powmod(c2,s2,n)) % n # 计算明文m
print(long_to_bytes(m))
flag{49d91077a1abcb14f1a9d546c80be9ef}
需要注意的是:代码中并没有直接给出私钥d,而是使用了两个公钥e1和e2以及对应的密文c1和c2来解密。这实际上是一个特殊的RSA解密场景,其中使用了CRT(中国剩余定理)来合并密文。在常规RSA解密中,我们只需要一个私钥d和对应的密文c即可。