Page 1 of 1

Elliptische Kurve verdoppeln und Implementierung in Python hinzufügen

Posted: 18 Jan 2025, 23:16
by Guest
Ich versuche, den „Double and Add“-Algorithmus zu implementieren, um Punkte auf einer elliptischen Kurve schnell in Python zu multiplizieren (3, bitte).

Basierend auf dem Vorhergehenden Antwort (zu Addition und Verdoppelung),

Addition elliptischer Kurvenpunkte über einem endlichen Körper in Python

der Wikipedia Seite,

https://en.wikipedia.org/wiki/Elliptic_ ... iplication

und mein Lehrbuch (Informationssicherheit, von Mark Stamp) habe ich mir ausgedacht folgenden Code:

Code: Select all

def point_add(N_x, N_y, Q_x, Q_y, p):
m = (Q_y - N_y) * pow((Q_x-N_x), p-2, p)
ret_x = (m ** 2 - N_x - Q_x) % p
ret_y = (m*(N_x - ret_x) - N_y) % p
return ret_x, ret_y

def point_double(N_x, N_y, a, p):
m = (3*(N_x ** 2)+a) * pow(2*N_y, p-2, p)
ret_x = (m ** 2 - N_x - Q_x) % p
ret_y = (m*(N_x - ret_x) - N_y) % p
return ret_x, ret_y

multiplier_A = 44
multiplier_B = 57
a = 10
b = -21
p = 41
N_x = 3
N_y = 6
Q_x = 0
Q_y = 0

multiplier_A = list(bin(multiplier_A)[2:])
multiplier_B = list(bin(multiplier_B)[2:])

for x_a in multiplier_A:
if x_a == '1':
Q_x, Q_y = point_add(N_x, N_y, Q_x, Q_y, p)
N_x, N_y = point_double(N_x, N_y, a, p)

print(Q_x, Q_y)
Was sicher ein falsches Ergebnis liefert.

Was mache ich falsch? Auch eine Neuimplementierung von Grund auf ist mehr als willkommen.

UPDATE

I Ich möchte den Punkt (3,6) mit Multiplikator_A und Multiplikator_B multiplizieren. Im Moment versuche ich nur multiplier_A(3,6).

Code: Select all

a
, b und p sind die Parameter der elliptischen Kurve