Kryptografie 2 Laboraufgaben

Computerlabor   22.04.2026

Aufgabe 4:  (Python-Klasse Poly zum Rechnen im Erweiterungs­körper 𝔽2m)

Schreiben Sie eine Klasse Poly in folgender Weise:

# repräsentiert ein Polynom als Element von F_2^m,
# dem Erweiterungskörper mit 2^m Elementen,
# und stellt die Grundrechenoperationen zur Verfügung;
# das Polynom wird als Liste der Koeffizienten dargestellt,
# zum Beispiel [1,0,1,1] für das Polynom x^3 + x + 1
class Poly(list):
    # die Zahl m und das irreduzible Polynom z sind Klassenattribute,
    # diese müssen vor Beginn der Berechnungen gesetzt werden,
    # z.B. Poly.m=4 sowie Poly.z=Poly([0,0,1,1]),
    # (dabei die führende 1 des irreduziblen Polynoms 10011 weglassen)

    def __init__(self, lst):
        if len(lst)<Poly.m:  # ggf. vorne mit Nullen auffuellen
            lst=[0]*(Poly.m-len(lst))+lst
        self[:]=lst

    # gibt das Nullpolynom zurueck
    @staticmethod
    def zero():
        return Poly([])

    # erzeugt das Polynom 1
    @staticmethod
    def one():
        return Poly([1])

    # addiert die Polynome self und other und
    # gibt ein Objekt vom Typ Poly zurück
    # (Addition der Koeffizienten modulo 2)
    def __add__(self, other):
    
    # multipliziert das Polynom self mit x (modulo z) und
    # gibt ein Objekt vom Typ Poly zurück
    def mulx(self):

    # multipliziert die Polynome self und other und
    # gibt ein Objekt vom Typ Poly zurück
    def __mul__(self, other):


if __name__ == "__main__":
    Poly.m=4
    Poly.z=Poly([0,0,1,1])
    p=Poly([0,1,0,1])
    q=Poly([1,1,0,1])
    r=p+q
    print(r)
    assert r==[1,0,0,0]
    r=p*q
    print(r)
    assert r==[1,1,0,0]

 

 

 

 

[up]

 


H.W. Lang   mail@hwlang.de   Impressum   Datenschutz
Diese Webseiten sind größtenteils während meiner Lehrtätigkeit an der Hochschule Flensburg entstanden