crypto

mały multi ale variat

Punkty: 451
Rozwiązań: 3

Just another RSA challenge.

a=16607683159820969821334053668565497023672553723120463309429594505511237879034577633612046554203127383421087262122366559782549452227442655978577041006582592182736922324295338420270626819107511550881657877
b=25551215271781189598874426878862316864812581725043603372252140494846089508926229930474790805776343733438714292797355930074164508091657786022929506398463880301910511131220554730086719022498840162517991137
c=20786191324953792562009866853371215040863303
(s2*s4)%c=17530888003368647156289259217837386783102445
ct=785547154159895163416792855604226740452666892425920416660482088542883109295262554615998469379148265248274239056169307995417564810745427786365670583665264750675180565543283972801367421018064417315741715011999267983264633725655631637335055017805428287224779042984693972865436493146223482821911236709963409119858297597822867927265123941567208578837332589680325040407713489219873658533728359206562111348571975462276840272945426363344149300657105433164772693789426314
N=1187958312838759124284554573131124126935409913863314039442751811472713832328228838809156981593920545781447477983725054814300215030741029873621268923849336891499156890391241452662673230424582615690695139488563447524637075308093800898523369871415156847585677060017697705930714628064633544771455068846410636235644969832309162176585034000877398786134508512029652562351236336633606232143741296847369935403850409548447590940562502745918919243939917885124873673746920879

from Crypto.Util.number import getPrime

def main():
    flag = open("flag.txt",'rb').read()
    flag_int = int.from_bytes(flag,byteorder='big')

    bits = 768
    bits_small = bits//8

    p = getPrime(bits)
    s1 = getPrime(bits_small)
    a = p//s1 
    s2 = p%s1

    q = getPrime(bits)
    s3 = getPrime(bits_small)
    b = q//s3
    s4 = q%s3

    N = p*q

    assert N == (a*s1+s2)*(b*s3+s4)

    c = getPrime(int((bits_small*1.5)))
    s24c = (s2*s4)%c

    e = 65537
    ct = pow(flag_int,e,N)
    print(f"a={a}")
    print(f"b={b}")
    print(f"c={c}")
    print(f"(s2*s4)%c={s24c}")
    print(f"ct={ct}")
    print(f"N={N}")

main()

Format flagi: ecsc24{litery_cyfry_i_znaki_specjalne}.
W razie wątpliwości lub pytań dotyczących konkursu zapraszamy na naszego Discorda: https://discord.gg/gAtRKa2rcn.

Aby wysłać flagę, musisz się zalogować.