ヒント
ヒント 1見る
gcd(e1, e2) = 1 です。拡張ユークリッドの互除法で s1×e1 + s2×e2 = 1 となる整数 s1, s2 を求めます
ヒント 2見る
c1^s1 × c2^s2 ≡ m^(s1×e1 + s2×e2) = m (mod n) が成り立ちます
ヒント 3見る
負の指数は逆元で計算します。Python 3.8以降なら pow(c, -k, n) がそのまま使えます
Cryptanalysis - RSA Common Modulus Attack
2つのシステムが同じRSAの法nを使い回し、公開指数だけを変えていました。同じメッセージを e1 と e2 で暗号化した暗号文 c1, c2 が漏れています(public_keys.txt、ciphertexts.txt)。nは素因数分解できませんが、秘密鍵なしでメッセージを取り戻し、フラグを提出してください。
gcd(e1, e2) = 1 です。拡張ユークリッドの互除法で s1×e1 + s2×e2 = 1 となる整数 s1, s2 を求めます
c1^s1 × c2^s2 ≡ m^(s1×e1 + s2×e2) = m (mod n) が成り立ちます
負の指数は逆元で計算します。Python 3.8以降なら pow(c, -k, n) がそのまま使えます