Skip to content
Snippets Groups Projects
Commit 017efb67 authored by Peter Gerwinski's avatar Peter Gerwinski
Browse files

Notizen 1.6.2023

parent 77c8e4e2
No related branches found
No related tags found
No related merge requests found
letzte Woche:
- https://befragung.hs-bochum.de/evasys/online.php?pswd=EWEPU
- RSA-Ver- und Entschlüsselung, Debugging-Techniken
- Stundenplan-Algorithmus
heute:
- RSA-Ver- und Entschlüsselung mit binärer Exponentiation
- Langzahl-Algorithmen
- 15:00 Uhr: Mobilitätsumfrage
Im Rahmen des Klimaschutzkonzeptes sowie des Nachhaltigkeitsberichtes wird über
die nächsten vier Wochen eine Umfrage zur Erfassung des Mobilitätsverhaltens
aller Hochschulangehörigen durchgeführt. Diese dient zum einen der Ermittlung
der Treibhausgasemissionen des Pendelverkehrs für die Treibhausgasbilanz der
Hochschule Bochum. Zum anderen soll die Bekanntheit und Nutzung bestehender
Mobilitätsangebote abgefragt werden, die die BO klimafreundlicher gestalten.
RSA, 25.05.2023, 16:20:49
~~~~~~~~~~~~~~~~~~~~~~~~~
Schlüsselerzeugung:
- d durch Durchprobieren zu finden, hat O(n), ist also
genauso langsam wie das Knacken der Verschlüsselung.
- Der erweiterte euklidische Algorithmus hat O(log n).
Verschlüsseln und Entschlüsseln:
- Modulo-Exponentiation: in Schleife fortwährend multiplizieren,
in jedem Durchlauf modulo N rechnen.
(Andernfalls gibt es einen Überlauf. m^e oder c^d sind
riesengroße Zahlen - erst recht, wenn m, e, c und d bereits
riesengroße Zahlen sind.)
(Beobachtung: Wenn m (oder c) durch 2 teilbar ist, kommt
bei der Potenz ab e = 64 (bzw. d = 64) zuverlässig 0 heraus.
Für Details siehe: rsa-04.txt)
- Diese Methode der Modulo-Exponentiation hat O(n), ist also
genauso langsam wie das Knacken der Verschlüsselung.
- Um RSA brauchbar zu machen, benötigen wir einen Algorithmus
für die Modulo-Exponentiation, der deutlich schneller ist
als O(n), am besten O(log n) oder schneller.
Wie kann man Modulo-Exponentiation effizienter programmieren,
als in einer Schleife fortwährend zu multiplizieren?
Ansatz:
Wie kann man Multiplikation effizienter programmieren,
als in einer Schleife fortwährend zu addieren?
--> schriftlich
--> Schriftliche Multiplikation hat O(?).
42 · 137
--------
42 \
126 3 · 42 = 126 } 1 Schleifendurchlauf pro Ziffer
294 7 · 42 = 294 /
--------
462
--> Schriftliche Multiplikation hat O(log n).
(log n = Anzahl der Ziffern)
Dasselbe binär:
11 · 101
--------
11 Multiplikation mit 0 oder 1 ist trivial.
0
11
--------
1111
Übertragung:
Wie kann man Modulo-Exponentiation effizienter programmieren,
als in einer Schleife fortwährend zu multiplizieren?
--> Aus Plus wird Mal, aus Mal wird Hoch, aus 0 wird 1 (neutrales Element).
--> "Binäre Exponentiation" --> Wikipedia
Aufgabe:
(a) Gegeben zwei Zahlen b und e (vom Typ int).
Berechnen Sie b^3 mittels binärer Exponentiation.
(b) Dasselbe modulo einer dritten Zahl n (vom Typ int).
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment