Files
darkfi/script/research/ec/pairing/2.2.2-ecdlp.sage

27 lines
572 B
Python

q = 1021
K = GF(q)
E = EllipticCurve(K, [905, 100])
print(E)
print(f"Group order is: {E.cardinality()}")
P = E(1006, 416)
assert P.additive_order() == E.cardinality()
Q = E(612, 827)
matches = {}
for j, m in factor(E.cardinality()):
assert m == 1
P_j = int(E.cardinality() / j) * P
Q_j = int(E.cardinality() / j) * Q
for k in range(j):
if k * P_j == Q_j:
#print(f"Match found for j = {j}!")
matches[j] = k
break
k = crt(list(matches.values()), list(matches.keys()))
print(f"k = {k} mod {E.cardinality()}")