-
Notifications
You must be signed in to change notification settings - Fork 3
/
decrypt.py
32 lines (25 loc) · 1.11 KB
/
decrypt.py
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
p = 13024503624536986372207718799887559302163373521704796859169256921158088157401633181315388323654235925097662427617011693572649107613454204598163366409190531
n = 157051302474457581293036787330969331464775850878891372978838539416588868233426014492406511583009093201777959474514878639536445804860657263671920872630373659846692222779553914817585275449790773059139654719259450373042492940681312609384145831176362131114203919180569933962838166419660656321919540477301488654477L
enc = 0x630f33b0a96b93ca75d1ffface41c849fa10f0411ff34406f7702cbd9de81f46fbb0a29fb02c63f0ec970eab298958648bac20bd69b4dd16ccc0c5e2e3af365b619eb1b41fe72d2dd7eb3da0eba226519aef0161e575d306006a52b010a488c78b374653ebee3c891e36cbf8f8ca2a380419256d622185ffdc917ab4aa40f982
q = n / p
pi = (p - 1)*(q - 1)
def egcd(a, b):
if a == 0:
return (b, 0, 1)
else:
g, y, x = egcd(b % a, a)
return (g, x - (b//a)*y, y)
def modinv(a, m):
g, x, y = egcd(a, m)
if g != 1:
return None
else:
return x % m
def int2bytes(x):
output = ""
while x != 0:
output += chr(x%0x100)
x >>= 8
return output
d = modinv(65537, pi)
print int2bytes(pow(enc, d, n))[::-1]