Cryptography Reference
In-Depth Information
Algorithmus 6.4 Der Miller-Rabin-Primzahltest
MillerRabin( n )
Vorbedingung: n ≥
3 ,ungerade
1. Trenne Zweierpotenzen von n −
1 ab.
wähle m ungerade und l derart, dass n −
1=2 l · m
2. Wähle potentielle Artjunov-Zeugen zufällig.
a = flip (
)
3. Bestimme und teste erstes Glied der Artjunov-Folge.
b = a m rmod n
falls b ∈{−
{
2 ,...,n−
2
}
,so
gib » n ist prim« aus
4. Bestimme und teste die anderen Glieder der Artjunov-Folge.
für i =0 bis l −
1 , 1
}
2
b = b 2 rmod n
falls b =
1 ,so
gib » n ist prim« aus
falls b =1 ,so
gib » n ist zusammengesetzt« aus
5. Fange restliche Fälle auf.
gib » n ist zusammengesetzt« zurück
Nachbedingung: n ist Primzahl und die Ausgabe ist » n ist prim«. Oder: » n ist zusammen-
gesetzt« und die Wahrscheinlichkeit, dass » n ist prim« ausgegeben wird, ist
1 / 4 .
Die Wahrscheinlichkeit auf eine Zahl a
zu stoßen, welche Bedingung 1.
erfüllt, ist also 4 / ( n − 1) , und damit verschwindend gering.
Einzeln betrachtet taugen Bedingung 1. und 2. aus Lemma 6.3.7 also letztlich doch
nicht für einen Primzahltest. Glücklicherweise kann man die beiden Bedingungen ge-
schickt kombinieren, um einen guten Primzahltest zu erhalten. Dies führt uns zum Miller-
Rabin-Primzahltest (siehe Algorithmus 6.4), der in der Praxis eingesetzt wird und den
wir nun näher erläutern.
Beim Miller-Rabin-Primzahltest betrachtet man zu einem a
∈{
1 ,...,n
1
}
∈{
2 ,...,n
2
}
die so-
genannte Artjunov-Folge b 0 ,...,b l− 1 mit b i =( a m ) 2 i rmod n und n
2 l für m
1= m
·
1 . Insbesondere gilt b i = b i− 1
ungerade und l
rmod n für alle i
∈{
1 ,...,l
1
}
und
b l− 1 mod n = a n− 1 mod n .
Ist b 0 ∈{
, dann gilt b 1 = b 0
1 .
In diesem Fall stößt man mit der Artjunov-Folge also auf kein Element, das Bedingung
1. oder 2. aus Lemma 6.3.7 erfüllen würde. Im Miller-Rabin-Primzahltest wird deshalb
» n ist prim« ausgegeben (siehe Algorithmus 6.4, 3.).
Ist dagegen b 0 /∈{ 1 , − 1 }
1 ,
1
}
rmod n =1 . Folglich gilt b i =1 für alle i
, so schauen wir die Elemente b 1 ,...,b l− 1
nacheinander an.
Treffen wir auf
1 , dann sind alle folgenden Zahlen 1 . Wir sind also wieder nicht auf ein
Element gestoßen, das Bedingung 1. oder 2. erfüllen würde. Im Miller-Rabin-Primzahltest
wird deshalb » n ist prim« ausgegeben (siehe Algorithmus 6.4, 4.). Treffen wir aber auf 1 ,
ohne vorher
1 gesehen zu haben, dann haben wir ein Element gefunden, das Bedingung
1. erfüllt. Es wird deshalb » n ist zusammengesetzt« ausgegeben (siehe Algorithmus 6.4,
4.). Tauchen beide Fälle bis zum Schluss nicht auf, so ist b l− 1 /
und b l− 1 mod n =
∈{
1 ,
1
}
 
Search WWH ::




Custom Search