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 52 53 54 55 56 57 58 59 60 61 62
| from Crypto.Util.number import *
gift = bytes_to_long(b'GoOd_byE_nEw_5t@r') e = 3 n = 17072342544150714171879132077494975311237876365187751353863158074020024719122755004761547735987417065592254800869192615807192722193500063611855839293567948232939959753821265552288663615847715716482887552271575844394350597695771100384136647573934496089812758071894172682439278191678102960768874456521879228612030147515967603129172838399997929502420254427798644285909855414606857035622716853274887875327854429218889083561315575947852542496274004905526475639809955792541187225767181054156589100604740904889686749740630242668885218256352895323426975708439512538106136364251265896292820030381364013059573189847777297569447 c1 = 8101607280875746172766350224846108949565038929638360896232937975003150339090901182469578468557951846695946788093600030667125114278821199071782965501023811374181199570231982146140558093531414276709503788909827053368206185816004954186722115752214445121933300663507795347827581212475501366473409732970429363451582182754416452300394502623461416323078625518733218381660019606631159370121924340238446442870526675388637840247597153414432589505667533462640554984002009801576552636432097311654946821118444391557368410974979376926427631136361612166670672126393485023374083079458502529640435635667010258110833498681992307452573 c2 = 14065316670254822235992102489645154264346717769174145550276846121970418622727279704820311564029018067692096462028836081822787148419633716320984336571241963063899868344606864544582504200779938815500203097282542495029462627888080005688408399148971228321637101593575245562307799087481654331283466914448740771421597528473762480363235531826325289856465115044393153437766069365345615753845871983173987642746989559569021189014927911398163825342784515926151087560415374622389991673648463353143338452444851518310480115818005343166067775633021475978188567581820594153290828348099804042221601767330439504722881619147742710013878 c3 = 8094336015065392504689373372598739049074197380146388624166244791783464194652108498071001125262374720857829973449322589841225625661419126346483855290185428811872962549590383450801103516360026351074061702370835578483728260907424050069246549733800397741622131857548326468990903316013060783020272342924805005685309618377803255796096301560780471163963183261626005358125719453918037250566140850975432188309997670739064455030447411193814358481031511873409200036846039285091561677264719855466015739963580639810265153141785946270781617266125399412714450669028767459800001425248072586059267446605354915948603996477113109045600
P.<m1, m2> = PolynomialRing(Zmod(n)) f1 = m1**e - c1 f2 = m2**e - c2 f3 = (m1+m2+gift)**e - c3 res1 = f1.sylvester_matrix(f3,m1).det() res2 = f2.sylvester_matrix(f3,m2).det()
rres = 0 P.<m2> = PolynomialRing(Zmod(n)) for i in range(len(res1.coefficients())): rres += res1.coefficients()[i]*(m2^(res1.exponents()[i][1])) f2 = m2**e - c2 def gcd(g1, g2): while g2: g1, g2 = g2, g1 % g2 return g1.monic() m2 = int(-gcd(rres, f2)[0]) print(long_to_bytes(m2))
''' # get m1 (Method 1) rres = 0 P.<m1> = PolynomialRing(Zmod(n)) for i in range(len(res2.coefficients())): # print(res1.coefficients()[i]*(m1^(res1.exponents()[i][1])) rres += res2.coefficients()[i]*(m1^(res2.exponents()[i][0])) f1 = m1**e - c1 # print(rres) def gcd(g1, g2): while g2: g1, g2 = g2, g1 % g2 # print(g1) return g1.monic() m1 = int(-gcd(rres, f1)[0]) # print(long_to_bytes(m1)) '''
P.<m1> = PolynomialRing(Zmod(n)) f1 = m1**e - c1 f3 = (m1+m2+gift)**e - c3
def gcd(g1, g2): while g2: g1, g2 = g2, g1 % g2 return g1.monic() print(long_to_bytes(int(-gcd(f3, f1)[0])))
|