Erweiterter Euklid - Die modular Inverse
Mit dem erweiterten Euklid wird die modular Inverse berechnet. In diesem speziellem Fall
d für den privaten Schlüssel. Dies ist möglich, weil folgendes gilt:
Für zwei Zahlen a, b ∈ ℤ gibt es immer Zahlen x, y ∈ ℤ so daß
ggT(a, b) = x * a + y * b.
Die Berechnung kann in zwei Varianten ausgeführt werden. Hier händisch die
rekursive. Das Programm nutzt die iterative.
Solange der Rest ≠ 0 ist, wird a durch b und b durch Rest = a mod b ersetzt. Außerdem werden die Koeffizienten neu berechnet. e * d = 1 mod Phi(N) im Beispiel 47 * d = 1 mod 60 47 * x + 60 * y = 1 ist zu lösen. g = ganzzahliger Teil von a/b a b g Rest x=d y --------------------------- 47 60 0 47 47 < 60 ->Argumente tauschen 60 47 1 13 abwärts immer a mod b 47 13 3 8 13 8 1 5 8 5 1 3 5 3 1 2 3 2 1 1 2 1 2 0 Bei Rest = 0 abbrechen und von unten aufwärts x und y ausrechnen. 47 60 0 47 23 -18 Schema für jede Zeile bis auf die unterste: 60 47 1 13 -18 23 x = y(zeile darunter) 47 13 3 8 5 -18 y = x(zeile darunter) - 13 8 1 5 -3 5 g(aktuelleZeile) * y(zeile darunter) 8 5 1 3 2 -3 5 3 1 2 -1 2 3 2 1 1 1 -1 2 1 2 0 0 1 x = Rest * a, y = 1 * b Probe (e * d) mod Phi(N) = 1 (47 * 23) mod 60 = 1081 mod 60 = 1; damit ist die Inverse d = x = 23