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
| from Crypto.Util.number import * import gmpy2
e1=5077048237811969427473111225370876122528967447056551899123613461792688002896788394304192917610564149766252232281576990293485239684145310876930997918960070816968829150376875953405420809586267153171717496198336861089523701832098322284501931142889817575816761705044951705530849327928849848158643030693363143757063220584714925893965587967042137557807261154117916358519477964645293471975063362050690306353627492980861008439765365837622657977958069853288056307253167509883258122949882277021665317807253308906355670472172346171177267688064959397186926103987259551586627965406979118193485527520976748490728460167949055289539 e2=12526848298349005390520276923929132463459152574998625757208259297891115133654117648215782945332529081365273860316201130793306570777735076534772168999705895641207535303839455074003057687810381110978320988976011326106919940799160974228311824760046370273505511065619268557697182586259234379239410482784449815732335294395676302226416863709340032987612715151916084291821095462625821023133560415325824885347221391496937213246361736361270846741128557595603052713612528453709948403100711277679641218520429878897565655482086410576379971404789212297697553748292438183065500993375040031733825496692797699362421010271599510269401 e3=12985940757578530810519370332063658344046688856605967474941014436872720360444040464644790980976991393970947023398357422203873284294843401144065013911463670501559888601145108651961098348250824166697665528417668374408814572959722789020110396245076275553505878565603509466220710219260037783849276475397283421068716088638186994778153542817681963059581651103563578804145156157584336712678882995685632615686853980176047683326974283896343322981521150211317597571554542488921290158122634140571148036732893808064119048328855134054709120877895941670166421664806186710346824494054783025733475898081247824887967550418509038276279 c=1414176060152301842110497098024597189246259172019335414900127452098233943041825926028517437075316294943355323947458928010556912909139739282924255506647305696872907898950473108556417350199783145349691087255926287363286922011841143339530863300198239231490707393383076174791818994158815857391930802936280447588808440607415377391336604533440099793849237857247557582307391329320515996021820000355560514217505643587026994918588311127143566858036653315985177551963836429728515745646807123637193259859856630452155138986610272067480257330592146135108190083578873094133114440050860844192259441093236787002715737932342847147399 N=17853303733838066173110417890593704464146824886316456780873352559969742615755294466664439529352718434399552818635352768033531948009737170697566286848710832800426311328560924133698481653594007727877031506265706341560810588064209681809146597572126173303463125668183837840427667101827234752823747483792944536893070188010357644478512143332014786539698535220139784440314481371464053954769822738407808161946943216714729685820896972467020893493349051243983390018762076812868678098172416465691550285372846402991995794349015838868221686216396597327273110165922789814315858462049706255254066724012925815100434953821856854529753
alpha2 = 768/2048 M1 = int(gmpy2.mpz(N)**(3./2)) M2 = int( gmpy2.mpz(N) ) M3 = int(gmpy2.mpz(N)**(3./2 + alpha2)) M4 = int( gmpy2.mpz(N)**(0.5) ) M5 = int( gmpy2.mpz(N)**(3./2 + alpha2) ) M6 = int( gmpy2.mpz(N)**(1.+alpha2) ) M7 = int( gmpy2.mpz(N)**(1.+alpha2) ) D = diagonal_matrix(ZZ, [M1, M2, M3, M4, M5, M6, M7, 1]) B = Matrix(ZZ, [ [1, -N, 0, N**2, 0, 0, 0, -N**3], [0, e1, -e1, -e1*N, -e1, 0, e1*N, e1*N**2], [0, 0, e2, -e2*N, 0, e2*N, 0, e2*N**2], [0, 0, 0, e1*e2, 0, -e1*e2, -e1*e2, -e1*e2*N], [0, 0, 0, 0, e3, -e3*N, -e3*N, e3*N**2], [0, 0, 0, 0, 0, e1*e3, 0, -e1*e3*N], [0, 0, 0, 0, 0, 0, e2*e3, -e2*e3*N], [0, 0, 0, 0, 0, 0, 0, e1*e2*e3] ]) * D
L = B.LLL()
v = Matrix(ZZ, L[0]) x = v * B**(-1) phi_ = (e1*x[0,1]/x[0,0]).floor() d = inverse_mod(65537, phi_) print(long_to_bytes(int(pow(c,d,N))))
|