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
| from gmpy2 import invert import binascii def gongmogongji(n, c1, c2, e1, e2): def egcd(a, b): if b == 0: return a, 0 else: x, y = egcd(b, a % b) return y, x - (a // b) * y s = egcd(e1, e2) s1 = s[0] s2 = s[1]
if s1 < 0: s1 = - s1 c1 = invert(c1, n) elif s2 < 0: s2 = - s2 c2 = invert(c2, n) m = pow(c1, s1, n) * pow(c2, s2, n) % n return m
c1=8454183967325114702871606020371893044643730848194421087800555329951749548122339370132406738438445748436613875684020078481120800301115768203669597144997733800335384024451758569713148077498773356000202354950315565733238107631918065866000666543639581410947467826793138310934187582903203581147191018919872761778285965302617242724210250702053620543591080088403287542360743392129404353088927828568618521099909157542189940186062740901165582685911913496261428049266993355399200458969282547528002146757745487534561043968844285589219887599453366653980861533030050776967395711234608754210628749429707754565377212941836511464698 c2=3474896545293913347667202223451565153852862129794344030200798688166203177565324486722621485505590942555081101762105348054858307764466250576794351605801560468579220594430471412245417182169425232767469252787915312915663322118392070561689481437976881213082255419441547071435443309213796735780603082347566527154600699672908140809936545765094124072879172773255195232516309146970129665290633260997334593298334430430898595943117986308303640513184694554167523992959853810866556034559033529469961279555546599869458610138758291003488308546823595786705144504162047084575649567675866387296272750353993133512245405497044906025497 n=15409179157709387241557822685426841443579313151672696544378035820627466617508122062530604139946669340728697620999406940282215117633367743233931254718933601150667815157829687259236246472336122252622342727296574578441506307923356119023632658875925317157796384903071654748687628503417628946352328486576603038386661099039350318676174733827586996443060446551088315380331434077186356265756497177470964732140897803977195640723451121610236945525050901485824618145624534940660537469868358175524552404233477850296944812441656863987279954083829550858880562581730570562695967912408470110382783785378042546294512445145741950785599 e1=35807 e2=64109 result = gongmogongji(n, c1, c2, e1, e2) print(result) print(hex(143822866208467685915742288235397526795410934392605167552521980813958173929763589128464185639973245)) print(binascii.unhexlify(b'43554d544354467b30333762316139633137353339383764353138343533373266366366313862317d'))
|