import random, hashlib from Crypto.Util.number import getPrime from secret import x, y, flag
BITS = 70
assert(2**BITS < x < 2**(BITS+1)) assert(2**BITS < y < 2**(BITS+1))
m = str(x) + str(y) h = hashlib.sha256() h.update(m.encode()) assert(flag == "flag{" + h.hexdigest() + "}")
p = getPrime(512) a = getPrime(510) b = getPrime(510) c = (1 + a * x * y ** 2 + b * x ** 2 * y) % p print("p = " + str(p)) print("a = " + str(a)) print("b = " + str(b)) print("c = " + str(c))
''' p = 8813834626918693034209829623386418111935369643440896703895290043343199520112218432639643684400534953548489779045914955504743423765099014797611981422650409 a = 2817275225516767613658440250260394873529274896419346861054126128919212362519165468003171950475070788320195398302803745633617864408366174315471102773073469 b = 1763620527779958060718182646420541623477856799630691559360944374374235694750950917040727594731391703184965719358552775151767735359739899063298735788999711 c = 2298790980294663527827702586525963981886518365072523836572440106026473419042192180086308154346777239817235315513418426401278994450805667292449334757693881 '''
p = 8813834626918693034209829623386418111935369643440896703895290043343199520112218432639643684400534953548489779045914955504743423765099014797611981422650409 a = 2817275225516767613658440250260394873529274896419346861054126128919212362519165468003171950475070788320195398302803745633617864408366174315471102773073469 b = 1763620527779958060718182646420541623477856799630691559360944374374235694750950917040727594731391703184965719358552775151767735359739899063298735788999711 c = 2298790980294663527827702586525963981886518365072523836572440106026473419042192180086308154346777239817235315513418426401278994450805667292449334757693881 D = 2**210 t = inverse(a, p) L = matrix([[D, 0, t*(c-1)], [0, 1, -t*b], [0, 0, p]]) tmp = L.LLL()[0] xy = GCD(tmp[1], tmp[2]) x = abs(tmp[2]) // xy y = abs(tmp[1]) // xy
[2024春秋杯夏季赛]happy2024部分
not2022but2024.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
from Crypto.Util.number import *
CBC_key = b''
p,q = getPrime(512),getPrime(512) n = p * q N = n**2 + 2024 hint = (pow(3, 2022, N) * p**2 + pow(5, 2022, N) * q**2) % N c = pow(bytes_to_long(CBC_key), 65537, n)
print('n =', n) print('h =', hint) print('c =', c)
''' n = 104765768221225848380273603921218042896496091723683489832860494733817042387427987244507704052637674086899990536096984680534816330245712225302233334574349506189442333792630084535988347790345154447062755551340749218034086168589615547612330724516560147636445207363257849894676399157463355106007051823518400959497 h = 7203581190271819534576999256270240265858103390821370416379729376339409213191307296184376071456158994788217095325108037303267364174843305521536186849697944281211331950784736288318928189952361923036335642517461830877284034872063160219932835448208223363251605926402262620849157639653619475171619832019229733872640947057355464330411604345531944267500361035919621717525840267577958327357608976854255222991975382510311241178822169596614192650544883130279553265361702184320269130307457859444687753108345652674084307125199795884106515943296997989031669214605935426245922567625294388093837315021593478776527614942368270286385 c = 86362463246536854074326339688321361763048758911466531912202673672708237653371439192187048224837915338789792530365728395528053853409289475258767985600884209642922711705487919620655525967504514849941809227844374505134264182900183853244590113062802667305254224702526621210482746686566770681208335492189720633162 '''