from functools import *
from Crypto.Util.number import *
import gmpy2
import libnum

 p = libnum.generate_prime(512)
 q = libnum.generate_prime(512)
 e1 = libnum.generate_prime(150)
 e2 = libnum.generate_prime(150)
 e3 = 65537
 flag = '*****************************************'
 m = libnum.s2n(flag)
 n = p * q
 n_e = e1 * e2
 phi = (p - 1) * (q - 1)
 phi_e = (e1 - 1) * (e2 - 1)
 d_e = gmpy2.invert(e3,phi_e)
 dp = d_e % (e1 - 1)
 c1 = pow(m,e1,n)
 c2 = pow(m,e2,n)
 print('n =', n)
 print('n_e = ', n_e)
 print('c1 =', c1)
 print('c2 =', c2)
 print('dp =', dp)
 print('e3 =', e3)


n = 60984961924036640364806324068224697071843724749390772716648370179057892113876360274026354662527777447902822720596626094363633542717821045035441273653134740082082972528467040631675108058268481211224587979227700303746708094408639881186270901498495613159595719501389800228775436242418332342165682104816100945559
n_e =  528565534050303289402007510968179435618186732104470795324112506464649249469837867028185617
c1 = 14643165800600469237679161939570210679439096911755461832302138620621212724063371108183767129591712055258072458698793819383057004625557577440444773493982158481797933707633029392859049044470914532014267958303995860803871791733761877112192748951375669095992152628840179729532225161446048952172457991042916248568
c2 = 47744166763747993083913069262560688521758241055343711330487778299969300229670028543968082464934326523754042128559756835029869433598546417098582906459369495989688837877596260888669274901459794346656919486877501825652169698125071792901224555479266468029736677586557495945618181583432146191688552560789016927665
dp = 487978202023750799970713551102136558437027925
e3 = 65537