1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| import gmpy2 from Crypto.Util.number import long_to_bytes from z3 import *
tmp1=267250288454671020661183002864902079825043927948084290018881840749593744112726102797024780930797632709553108642750613400441660075135953435838879572761149456222440690951092454409936578252836007774319573115773705552877746875261145722418936676843582728011234303760521211480177882717639401447544081327143079896120 tmp2=16917955357177705838022522227269189799965442955600174230088241413537748036079610427667748524760416412487661588166675433898394627618977795412467578931925290358440662780942041112815203687805808800979128075090221137838151372846654787093946656482304031633775358207228010135390832522575861986102844835573116079075374771222923318301544600822685589433165393483870570768619713138725020836976344994143665005213595439734053715247430701190483139697651308683944225607919788529538100719847326451607419315958484481451634531624954226369336218518430937719669057217473641902380243356961565889376657557909528540953750939711249576195159 e=65537 c=5556174183094477266451814135598079847549101214607407493539824119455757033446976990042962516935280719453306508436587735802442820646417947364018203517042867867234303222841927154859105937645608430659139623801595899283410063126536085399147208144097197880122970573526524116735044315018453029904516767525608508679020577616271754886842387942346107665596391743557339734244348287686755256712318046694093530306203491446373883714768977770886274094556846171675194528687326913219088784425334478253460076116644849541623671796578618297488203818462587973285321935678023132310392911491050341349681920275418686930590504234068089136064
s = Solver() p,q = Ints('p q') s.add(p+q == tmp1) s.add(p*q == tmp2) assert s.check() == sat p = s.model()[p].as_long() q = s.model()[q].as_long() n = q*p phi = (p-1)*(q-1) d = gmpy2.invert(e,phi) m = gmpy2.powmod(c,d,n) print(long_to_bytes(m))
|