Преглед изворни кода

example of cracking EC group

narodnik пре 4 година
родитељ
комит
5ba1f3edf2
1 измењених фајлова са 26 додато и 0 уклоњено
  1. 26 0
      script/research/elliptic_curves/pairing/2.2.2-ecdlp.sage

+ 26 - 0
script/research/elliptic_curves/pairing/2.2.2-ecdlp.sage

@@ -0,0 +1,26 @@
+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()}")