Modulare-Exponentiation-Rechner
Square-and-Multiply · BigInt Support · RSA · Diffie-Hellman
Berechne ab mod m für beliebig große ganze Zahlen mit dem schnellen binären (rechts-nach-links) Algorithmus. Vollständige Schritt-für-Schritt-Tabelle, Binärvisualisierung und kryptografische Anwendungen.
Schnellbeispiele
Binärdarstellung von b
Grün = Bit 1 (Multiplizieren & Quadrieren). Grau = Bit 0 (nur Quadrieren). LSB links, MSB rechts. Begrenzt auf 32 Bits.
Übersicht des Algorithmus
Schritt-für-Schritt-Quadrierungstabelle
Spalten verarbeitet LSB nach MSB von b. Grüne Zeilen: Bit = 1, Multiplikation auf das Ergebnis angewendet. Graue Zeilen: Bit = 0, nur Quadrierung.
| Schritt | Bit (LSB→MSB) | Aktuelle Basis a2k mod m | Ergebnis | Operation |
|---|
RSA Verschlüsselung & Entschlüsselung
Public-Key-Kryptografie durch modulare Exponentiation
RSA verschlüsselt eine Nachricht M als C = Me mod n mit dem öffentlichen Schlüssel (e, n). Die Entschlüsselung stellt M als M = Cd mod n mit dem privaten Exponenten d wieder her.
Probiere es aus: Verwende das Schnellbeispiel "2103 mod 143 (toy RSA)" im Rechner.
Diffie-Hellman-Schlüsselaustausch
Gemeinsames Geheimnis über unsicheren Kanal
Alice und Bob einigen sich auf eine Primzahl p und einen Generator g. Alice berechnet A = ga mod p und Bob berechnet B = gb mod p. Der gemeinsame Schlüssel ist K = gab mod p.
Sicherheit: a aus A = ga mod p zu finden, ist das diskrete Logarithmus-Problem — rechnerisch schwer für große p.
Fermat-Primzahltest
Wahrscheinlichkeitstheoretische Primzahlerkennung durch modulare Exponentiation
Fermats kleiner Satz: Wenn p eine Primzahl ist und ggT(a, p) = 1, dann ap-1 ≡ 1 (mod p). Ein Fermat-Primzahltest prüft diese Bedingung für mehrere zufällige Basen.
Was ist modulare Exponentiation?
Modulare Exponentiation ist die Berechnung von ab mod m — das Potenzieren einer Basis a mit einem Exponenten b und das Behalten nur des Rests bei der Division durch den Modulo m. Diese Operation ist ein Eckpfeiler der modernen Zahlentheorie und Public-Key-Kryptografie.
Zum Beispiel 3644 mod 645 = 36. Während der Zwischenwert 3644 eine astronomisch große Zahl ist, ist die Antwort einfach 36.
Warum die naive Berechnung versagt
Der direkte Ansatz — zuerst ab berechnen, dann den Rest nehmen — ist für große Exponenten völlig unpraktisch. Die Zahl 21000 hat bereits über 300 Dezimalstellen.
Die wichtigste Erkenntnis ist, dass wir nach jeder einzelnen Multiplikation modulo m reduzieren können, wodurch alle Zwischenwerte unter m2 bleiben.
Der Square-and-Multiply-Algorithmus
The algorithm processes the Binärdarstellung of b from LSB (least significant bit) to MSB. At step k (corresponding to bit k of b):
- Immer quadrieren: berechne basis = basis × basis mod m
- Wenn Bit k = 1: multipliziere zusätzlich ergebnis = ergebnis × basis mod m
- Wenn Bit k = 0: überspringe die Multiplikation
Das Ergebnis akkumuliert nur jene Potenzen von a, deren entsprechendes Bit in b 1 ist.
O(log b) Komplexität
Der Algorithmus führt genau ⌊log2 b⌋ Quadrierungen durch. Da die Anzahl O(log b) ist, ist die Gesamtzahl der modularen Multiplikationen O(log b).
Für 2048-Bit-RSA-Parameter bedeutet dies etwa 2000 Multiplikationen von 2048-Bit-Zahlen — in Millisekunden machbar.
RSA-Verschlüsselung und -Entschlüsselung
RSA ist das am weitesten verbreitete Public-Key-Kryptosystem. Die Schlüsselerzeugung wählt zwei große Primzahlen p und q.
- Verschlüsselung: C = Me mod n
- Entschlüsselung: M = Cd mod n
Beide Operationen sind reine modulare Exponentiationen.
Diffie-Hellman-Schlüsselaustausch
Zwei Parteien einigen sich öffentlich auf eine große Primzahl p und eine Primitivwurzel g. Jede Partei wählt einen privaten Zufallsexponenten und veröffentlicht ihren öffentlichen Wert.
Fermats kleines Theorem
Fermats kleiner Satz besagt: Wenn p prim ist und ggT(a, p) = 1, dann ap−1 ≡ 1 (mod p). Dies ist eine notwendige Bedingung für Primalität.
Referenztabelle: Beispielberechnungen
| a | b | m | ab mod m | b in Binär | Quadrierungen |
|---|---|---|---|---|---|
| 3 | 644 | 645 | 36 | 1010000100 | 9 |
| 2 | 10 | 1000 | 24 | 1010 | 3 |
| 7 | 256 | 13 | 9 | 100000000 | 8 |
| 2 | 103 | 143 | 2 | 1100111 | 6 |
| 5 | 6 | 23 | 8 | 110 | 2 |
| 123 | 456 | 789 | 699 | 111001000 | 8 |