Logo des Instituts  
 aufwärts

Kryptografie Laboraufgaben

Kryptografie   17.11.2016

Aufgabe 7:  (Elliptische Kurven)

  1. Schreiben Sie eine Klasse EcPoint mit dem Konstruktor
    # x und y sind die Koordinaten des Punktes,
    # u==True stellt den unendlich fernen Punkt dar
    def __init__(self, x, y, u=False):
    

    zur Darstellung eines Punktes (x, y) auf einer elliptischen Kurve. Wenn der Parameter u den Wert True enthält, soll der unendlich ferne Punkt u dargestellt werden, x und y sind dann irrelevant.

  2. Implementieren Sie eine Methode
    # verknuepft die Punkte self und q  (Rechenoperation * )
    def __mul__(self, q): 
    

    um den Punkt self mit dem Punkt q zu verknüpfen. Rückgabewert der Methode soll der Punkt sein, der als Ergebnis der Verknüpfung herauskommt.

    Hierzu muss der Parameter a der elliptischen Kurve bekannt sein; implementieren Sie ihn als statisches Attribut der Klasse EcPoint und versehen Sie dieses statische Attribut vor Beginn der Berechnung mit einem Wert, z.B. mit

    EcPoint.a=-1.0
    
  3. Implementieren Sie eine Methode
    # potenziert den Punkt self mit einer ganzen Zahl k  (Rechenoperation **)
    def __pow__(self, k): 
    

    Realisieren Sie die Methode nach dem gleichen Prinzip wie bei der schnellen modularen Exponentiation (square-and-multiply).

  4. Fügen Sie in Ihrem Haupt­programm folgende Funktion ein, um einen realistischen Punkt p eines endlichen Körpers ganze Zahlenn zu erzeugen.
    def standardPoint():
        ModInt.n=1332297598440044874827085558802491743757193798159
        EcPoint.a=ModInt(297190522446607939568481567949428902921613329152)
        x=1089473557631435284577962539738532515920566082499
        y=127912481829969033206777085249718746721365418785
        return EcPoint(ModInt(x), ModInt(y))
    

     

 

 

 

 

up

 

homeH.W. Lang   Hochschule Flensburg   lang@hs-flensburg.de   Impressum   ©  
Valid HTML 4.01 Transitional