from Crypto.Util.number import getPrime, bytes_to_long

def GenerateKeys(p, q):
    e = 65537
    n = p * q
    phi = (p-1)*(q-1)
    d = pow(e, -1, phi)
    C = 0xbaaaaaad
    D = 0xdeadbeef
    A= 0xbaadf00d
    K = (A*p**2 - C*p + D)*d
    return (e, n, K)

def Encrypt():
    flag = b"" # Someone removed it wtf?
    p = getPrime(512)
    q = getPrime(512)
    e, n, K = GenerateKeys(p, q)
    pt = bytes_to_long(flag)
    ct = pow(pt, e, n)
    
    print(f"e = {e}")
    print(f"n = {n}")
    print(f"ct = {ct}")
    print(f"K = {K}")

Encrypt()
#e = 65537
#n = 136662138568405759652569485621304832135743269224429076000191336651576798256567957359278546453957784382953354418192811395367857796645157702643652845279396980899228024461423444406424932062611588269628079558885170894328481407656074170613184844511638158871277095257162360211838914457286082614699147445680796038227
#ct = 130271648744851557782584170500071792022104939052518963217627541505296014224787211138560303490640497291460182483303482823025319328938688635918862340195273272326812356907521416281992280612685135898549011238446090450277377633778290293177969023137190061209278323106360338751146173507493182990079659239549275916851
#K = 11004823678323196452575488769917780370651722871537083360894217054612837661166756758970261641451088154711003404193217952262381599857990268596413661000115679124811136232289911464267858150329782042746762779826561930994131179358899570429619787710549773068393703742259614559797785197115587924065297959454515731852004162693127123795721194664316039006075678888975675103724001543600016980598077669714621266892552662162429810867395241413731007821143316749400189850479761339926843340489141249598197713912268430779336145985663708654655967040461718023520251433442214072034844535697156327108560096923743135491375364608133670292194851637591
