1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| from Crypto.Util.number import * import os
FLAG = ? FLAG = [ os.urandom(len(FLAG) // 2) + FLAG[i : i + len(FLAG) // 2] for i in range(0, len(FLAG), len(FLAG) // 2) ] m = [bytes_to_long(j) for j in FLAG]
BITS = 1024 p = [getPrime(BITS // 2) for _ in range(7)] q = [getPrime(BITS // 2) for _ in range(7)] N = [P * Q for P, Q in zip(p, q)]
def encrypt1(N, bits, x): a = getPrime(bits) b = getPrime(bits) c = getPrime(bits // 8) M_enc = a * x**3 + b * x**2 + c * x + 0x10001 E = 0x3 C = [pow(M_enc, E, _N) for _N in N] return C, [a, b]
def encrypt2(N, bits, y): k = getPrime(bits - 4) d = getPrime(bits // 4) n = N[0] M_enc = (k * y + d) % n return M_enc, k
C1, leak = encrypt1(N, BITS, m[0]) C2, k = encrypt2(N, BITS, m[1])
print(C1) print(C2) print(N) print([leak, k])
"""
[39210675902767171073064943854104914397318121446101723025421410905880809922084555547089255445739204847056571781414623387440961486919230976050521197525269694636836736107851592114925116635570595845406470355695245201686960752108723499535746031147888962448468104477354730127377741730751421503842594966365061523611, 21675905167425162616128574708482426955230011762565450546432364936973398813051136425098917635524738479523732526959097768185699891467456510724995814165940757573953563334749813828856406836385462518051562757883886257894755193702929911690331512867034067960955467807907987651082960006573707163859514151189827543039, 66096646108301934399274118257308307915231557977518695885499139839256014181396290864623880247920279192753433403162454637403686504278754650695426688787028099307619721804296019266799275886911316095654630310191287154797468810317077271658831168841822906220843805965896946953728348949612192513562755900124531154758, 59816886601480912425861095206037446174954537458093383156605042918202726886144484284172884843968514213820643706653657717557404667263187774440262247299425581386485491597772150125631418669042180872231911344421331339829988482974074339802681772022167376065661758991731468975172693119092409811751010977334168329227, 131112679648205048523511262232304859502163506136877121849063240771494134509706400792339739037802667536327789119019499831954753404701512209305892773099066871412825558546748906486379573354059606182478458566624155474561116064363798350343687749035291790215358299762818824762715192679061741172663737658450572209367, 43643310640383695871097616622185046165283021240350731928406909225878913445249677119015988525120798758775418577387758786199121326418375800915037663945124008154833579277980455516349120358578516630571358237698555737897690224543497284945932954560392188972299922833854829080951404429531955120945676560659965603489, 86701979450316886662439264990876741541848626976960034624252876210104377646367821419752434477592971050189312544598877228848283940012847610261340736108023333441319041145481591925058814393418916451447318593515784941028265270347094940824842340023587831783417359874112396393716774480909551782193847811701805516777] 69085574629663347173384705931923126544561443330791566932169138079584064231904303151768069428960583575643803686043335536173400098508197016643364813988845877926095905027925245050156369608956271162096499662846148744826597576004622144548676808142857980790273598239328359851194701794184132266594811640276439440456 [83920436472644468114336514458670203166880598601128629213598308122315943647477648725334757281389680856824680820442629500839369540102313057613153893435692695034612252508378877741178750893940959073206110762081573056538282939095067915733216069732793365154982444459730076795460746755054219576896243180622309884857, 132725596767862704519311360731167952441682391848549606707566529766492075878297265627550452781820477936750075669184726394066918391524561121462184958422342407700116198048855415767147751546773676949154640543842318481818501132472569320223397688131850509215014309464347944742887557711206490173666583920389700708831, 134924627121589644200921401227820412795405507111882227090262833556323180628807565090996082413568256234706441297383609794783760229737170162336471738881536481435219623055860760116596049170405220819894188454775060000680086232217890374169172583458490637564394929259454363429508999282925031939964400848769589350491, 128873943327746391603693540782887020567439398816916556875862010785996700782497987136622770387575206425258784072486787785284480725904135783490965670039756044204693704982723579454943461154427854528700288773813084171149070243932237877744362300759725228935486757660861229602909283227018382899918657561881038505619, 146832632487409671396147661776251053252046208436311196368599785764793563685029004937845604951364341799356830955030267144214717409682996405331059642712978272389959402896807487012140791810051018782014584613953469051848108273079298465214188035861451147379551532909177106228818975000253004995700791363303591398459, 164794000056055772924285466363399754240674124006507460926378234769317895388675748427263619040491359383822058130343718920056496491529452605384133370219387562170540140885372967208746914628883252353006600795724839852988192708909358442436793925249434036012614880298210398628406695755800212917360433722047228398049, 101360955650592921689511287927563023257443133857308066996955169752147379480351337740384360871509578019642636047297880904446292996435719693298396788514627167328783134915667602044518260283224334952739097096020465949142922986182437466658501922066272028288416623070747615601017662797178039974501336148874247521949] [[172033543709250079406995655514186574845651452962745246851429713084015875663851567154407802901198710950909083364140681295346099328642342642964306329277710115376244558913902669009971316379491707676584883313738404183495735745680526851775827217485023912138926199278588523491795347151834454906478204848015449997813, 141076387206674739034287088707862731834700608913604205427734752654777620884017167083324052275488296306707270126602400204310553515997946671957412375316563939770394276277286373103689883205823383839999222214982602107066164731992952653247836262771503144928200922488783295873863479410518601888457156204261711297989], 9602302825522719640915293768448626622720608131148112056474311058382453436558663436086549890754206860742148415450801990589075559602643849034039835405603849681286607302379793761113070642053599564324739951301921822772409355006357379151336441982606852681753672574610317738650515758507858176186342104502011657569]
"""
|