Prof.Dr. W.Koepf
Dipl.-Math. T.Sprenger Ubungen zur Vorlesung
Ubungsblatt 05 COMPUTERALGEBRA I 16.11.2006
Aufgabe 1: (Modulare Inverse)
Benutzen Sie die erweiterte GCD-Funktion von Mathematica, um eine Funktion ModInv[a,r] zu implementieren, die das Inverse von a in Zr zuruckgibt, falls ein Inverses existiert und ansonsten 0.
(4 Punkte)
Aufgabe 2: (Modulares Potenzieren)
Programmieren Sie die Funktion powermod aus der Vorlesung iterativ.
(6 Punkte)
Aufgabe 3: (Modulare Logarithmen/Babystep-Giantstep-Verfahren) Sei p 2 P und n = bppc. Dann gilt
x logab mod p () ar ba qn mod p; (1)
wobei x = q n + r mit 0 q; r < n.
1. Beweisen Sie die Aquivalenz (1).
2. Die Aquivalenz (1) rechtfertigt die Vorgehensweise im folgenden Babystep-Giantstep- Verfahren zur Bestimmung von modularen Logarithmen
(i) Bilden Sie eine Menge M mit den Elementen ar mod p fur r = 0; : : : ; n 1.
(ii) Vergleichen Sie, ob ba qn mod p in M enthalten ist (q = 0; : : : ; n 1). Gilt ar ba qn mod p fur ein Paar (q; r), so geben Sie den (minimalen) modularen Logarithmus x = q n + r aus. Hinweis: ba qn b a nq
mod p lasst sich aus b a nq 1
a n mod p, also aus der vorherigen Iteration, bestimmen.
Implementieren Sie diesen Algorithmus.
3. Testen Sie Ihre Prozedur an den Beispielen (a) log25 mod 7
(b) log58 mod 13
(c) log166433376 mod 104729.
4. Geben Sie die Anzahl der Schritte an, die im schlechtesten Fall notwendig sind, den modularen Logarithmus mit der obigen Methode zu bestimmen. Vergleichen Sie diese mit der Anzahl der Schritte des in der Vorlesung beschriebenen Verfahrens (DiskreterLogarithmus).
(12 Punkte)
Abgabetermin: Dienstag, 28.11.2006, 09.15 Uhr ansprenger@mathematik.uni-kassel.de