SameMod
n相同,很明显是共模攻击。
# -*- coding: utf-8 -*- from libnum import n2s,s2n from gmpy2 import invert # 欧几里得算法 def egcd(a, b): if a == 0: return (b, 0, 1) else: g, y, x = egcd(b % a, a) return (g, x - (b // a) * y, y) def main(): n = 6266565720726907265997241358331585417095726146341989755538017122981360742813498401533594757088796536341941659691259323065631249 c1 = 3453520592723443935451151545245025864232388871721682326408915024349804062041976702364728660682912396903968193981131553111537349 c2 = 5672818026816293344070119332536629619457163570036305296869053532293105379690793386019065754465292867769521736414170803238309535 e1 = 773 e2 = 839 s = egcd(e1, e2) s1 = s[1] s2 = s[2] # 求模反元素 if s1<0: s1 = - s1 c1 = invert(c1, n) elif s2<0: s2 = - s2 c2 = invert(c2, n) m = pow(c1,s1,n)*pow(c2,s2,n) % n print m print hex(m) print n2s(m) if __name__ == '__main__': main()
输出
1021089710312311910410111011910111610410511010710511610511511211111511510598108101125
看着非常像ascii码,解码即可得到flag。