1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
import binascii import gmpy2 from z3 import * s = Solver() p=Int('p') q=Int('q') s.add(q+q*p**3 == 1285367317452089980789441829580397855321901891350429414413655782431779727560841427444135440068248152908241981758331600586) s.add(p*q+q*p**2 ==1109691832903289208389283296592510864729403914873734836011311325874120780079555500202475594) if s.check() == sat: print(s.model()) n=0x989f5774c6f199031dc64d5aad7907665ea5e03cde2d74da21 e=0x872a335 c=0x7a7e031f14f6b6c3292d11a41161d2491ce8bcdc67ef1baa9e p = 1158310153629932205401500375817 q = 827089796345539312201480770649 phi=(p-1)*(q-1) d=gmpy2.invert(e,phi) m=pow(c,d,n) print(binascii.unhexlify(hex(m)[2:].strip("L")))
|