-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlog4.py
30 lines (26 loc) · 950 Bytes
/
log4.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
import math
import numpy as np
import gmpy2
from gmpy2 import mpz,mul,powmod,invert,f_mod
p=mpz(13407807929942597099574024998205846127479365820592393377723561443721764030073546976801874298166903427690031858186486050853753882811946569946433649006084171)
g=mpz(7986892892644964809678573127386712039532852301584169807905118050675340956203921770492145296166905084126855959303199420887184894225814618909287510943703491)
h=mpz(10353923830460929735328496784361539060361238653685678824483529175983950553832878320450730127803739628395851941601331144145295269915794187037493934868513335)
y=(2**20)
x1,x2 =0,0
A ={}
print "lolek"
x=powmod(g,y,p)
print("x= ")
for r in range(y):
A[f_mod(mul(h,invert(powmod(g,r,p),p)),p)]=r
print(r)
print"hash table done"
for t in range(y):
value = powmod(x,t,p)
if(A.has_key(value)):
x1=A[value]
x2=t
print ("x1= ",x1)
print ("x2= ",x2)
print 'the value of x is ', (((x2*y) + x1)%p) # Answer
break