Elliptische Kurve verdoppeln und Implementierung in Python hinzufügenPython

Python-Programme
Guest
 Elliptische Kurve verdoppeln und Implementierung in Python hinzufügen

Post 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

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post