Elementare Zahlentheorie und Kryptographie
Elementare Zahlentheorie und Kryptographie
Elementare Zahlentheorie und Kryptographie
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Berechnung des Jacobi-Symbols (also insbesondere ein Test, ob [a] p (a ∈ Z) ein<br />
Quadrat in F p ist) <strong>und</strong> für das Ziehen der Wurzel aus [a] p , falls [a] p ∈ F ×2<br />
p . Dies<br />
wird z.B. im Public-Key-Verfahren von Rabin angewendet. Man kann sich fragen,<br />
ob ein ähnliches Gesetz für höhere Potenzreste gilt. Diese Frage wurde erst<br />
in den 1960er Jahren im Rahmen der sogenannten Klassenkörpertheorie geklärt.<br />
Eine Behandlung dessen würde den Rahmen dieser Vorlesung sprengen.<br />
Wir verzichten auf den Beweis von 6.2.2 <strong>und</strong> 6.2.1 Vorher wollen wir Anwendungen<br />
des Reziprozitätsgesetzes diskutieren.<br />
Beispiel: 101 ist eine Primzahl. Ist [79] 101 ∈ F × 101 ein Quadrat? Um dies zu<br />
beantworten berechnen wir ( 79<br />
101)<br />
. Es gilt<br />
( )<br />
( ) ( )<br />
79<br />
101 101<br />
= (−1) 78·100/4 = +<br />
101<br />
79 79<br />
nach dem Reziprozitätsgesetz. Da 101 = 22 mod 79 gilt folgt<br />
( ) ( ) ( ) ( ) ( )<br />
101 22 2 11 11<br />
= =<br />
= + .<br />
79 79 79 79 79<br />
Im letzten Schritt haben wir den Ergänzungssatz verwendet; beachte 79 =<br />
−1 mod 8. Weil 11 <strong>und</strong> 79 ungerade sind, dürfen wir wieder das Reziprozitätsgesetz<br />
anwenden:<br />
( 11<br />
79<br />
)<br />
( ) 79<br />
= (−1) 10∗78/4 = −<br />
11<br />
( ) ( 79 2<br />
= − .<br />
11 11)<br />
Im letzten Schritt haben wir 79 = 2 mod 11 verwendet. Da 11 = 3 mod 8 gilt,<br />
liefert der Ergänzungssatz<br />
( 2<br />
− = (−1)(−1) = +1.<br />
11)<br />
Insgesamt ergibt sich ( 79<br />
101)<br />
= +1, d.h. [79]101 ist ein Quadrat. □<br />
Algorithmus 6.2.3 (Algorithmus für Jacobi-Symbole)<br />
( Eingabe: a ∈ Z, b ∈ N mit b ungerade.<br />
a<br />
)<br />
b soll berechnet werden.<br />
Initialisiere: s := 1.<br />
if(a < 0, a := |a|; s := (−1) (b−1)/2 )<br />
(Nun a, b > 0, b ungerade.)<br />
while(a /∈ {0, 1},<br />
Berechne q, r mit a ÷ b = q Rest r, r ≥ 0.<br />
a := r.<br />
if (2 | a <strong>und</strong> a > 1 schreibe a = 2 t u mit u ungerade; a := u, s := ((−1) (b2 −1)/8 ) t s).<br />
(Nun a ∈ {0, · · · , b} ungerade.)<br />
if (a > 1, s := (−1) (a−1)(b−1)/4 s; vertausche a <strong>und</strong> b)<br />
87