-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRSA_weak.py
21 lines (14 loc) · 1.05 KB
/
RSA_weak.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import gmpy2
from gmpy2 import c_mod,mpz,powmod,f_mod
from gmpy2 import isqrt_rem,isqrt,invert
import sys
p=mpz(13407807929942597099574024998205846127479365820592393377723561443721764030073662768891111614362326998675040546094339320838419523375986027530441562135724301)
N=mpz(179769313486231590772930519078902473361797697894230657273430081157732675805505620686985379449212982959585501387537164015710139858647833778606925583497541085196591615128057575940752635007475935288710823649949940771895617054361149474865046711015101563940680527540071584560878577663743040086340742855278549092581)
q=N/p
e=65537
phi = (p-1) * (q-1)
d = invert(e,phi)
cipher = mpz(22096451867410381776306561134883418017410069787892831071731839143676135600120538004282329650473509424343946219751512256465839967942889460764542040581564748988013734864120452325229320176487916666402997509188729971690526083222067771600019329260870009579993724077458967773697817571267229951148662959627934791540)
m =powmod(cipher,d,N)
msg = '466163746f72696e67206c65747320757320627265616b205253412e'
print msg.decode('hex')