diff --git a/20220519/ad-202200519.txt b/20220519/ad-202200519.txt new file mode 100644 index 0000000000000000000000000000000000000000..d143ff048ca47051a6333f552d153dde6bab0a6d --- /dev/null +++ b/20220519/ad-202200519.txt @@ -0,0 +1,85 @@ +Aufgabe +======= + +Implementieren Sie einen nichttrivialen Algorithmus +mit großen vorzeichenlosen ganzen Zahlen. + +"groß" = "größer als das, was der Computer normalerweise verarbeiten kann" + +Aufteilung in Teams: + + - Grundrechenarten (einschließlich modulo) mit großen Zahlen + + - Exponentiation modulo p --> Websuche + + - Faktorisierung mittels der Fermat-Methode + +Beispiele: + + - Faktorisierung der 7. Fermatschen Zahl + + - RSA + + - Diffie-Hellman, El-Gamal + + - Elliptische Kurven + +Damit sich die Teams nicht gegenseitig blockieren: + + - "Dummy"-Funktionen für 64-Bit-Zahlen schreiben, + um damit schon mal die Schnittstelle festzulegen. + + - Später dann die Dummy-FUnktionen gegen die richtigen austauschen. + +Beispiel: + + Interface: + + void add (void *s1, void *s2, void *sum) + { + /* egal */ + } + + void init_number (uint64_t x, void *e) + { + /* egal */ + } + + Dummy-Implementierung: + + void add (void *s1, void *s2, void *sum) + { + uint64_t *ps1 = s1; + uint64_t *ps2 = s2; + uint64_t *psum = sum; + *psum = *ps1 + *ps2; + } + + void init_number (uint64_t x, void *e) + { + uint64_t *pe = e; + *pe + x; + } + + Ideen: + + - "Schriftlich" rechnen. + Jede Ziffer ist ein Array-Element, + z.B. eine Ziffer in einem String + oder eine Zahl von 0 bis 999999999 in einer 32-Bit-Zahl + oder eine 32-Bit-Zahl + oder eine 64-Bit-Zahl + ... + + - Dynamische Allozierung des Speichers: + Die Zeiger zeigen auf Objekte. + Die Zeiger auf die eigentlichen Daten sind in den Objekten enthalten. + + - Mit 32-Bit-Zahlen rechnen, + damit Überläufe noch durch den 64-Bit-Prozessor bearbeitet werden können. + +Teams: + + - RSA: Dominik Hasenburg, Leon Mensch + + - Grundrechenarten, Exponentiation: Simon Döring, Michael Edelmann, Leon Hänschke diff --git a/20220519/mathe-20220519-01-ringe.png b/20220519/mathe-20220519-01-ringe.png new file mode 100644 index 0000000000000000000000000000000000000000..0ef2976c41e7fb2a1127d993d5b4acb825428acb Binary files /dev/null and b/20220519/mathe-20220519-01-ringe.png differ diff --git a/20220519/mathe-20220519-02-ringe.png b/20220519/mathe-20220519-02-ringe.png new file mode 100644 index 0000000000000000000000000000000000000000..5d18320fb462799304d2321660e4abebc403cb53 Binary files /dev/null and b/20220519/mathe-20220519-02-ringe.png differ diff --git a/20220519/mathe-20220519-03-koerper.png b/20220519/mathe-20220519-03-koerper.png new file mode 100644 index 0000000000000000000000000000000000000000..cf64ff51078d56207a91fdcca53e8322ef669af0 Binary files /dev/null and b/20220519/mathe-20220519-03-koerper.png differ diff --git a/20220519/mathe-20220519-04-koerper.png b/20220519/mathe-20220519-04-koerper.png new file mode 100644 index 0000000000000000000000000000000000000000..eb786437f0632c64a6ed01c44520c25c3311ea48 Binary files /dev/null and b/20220519/mathe-20220519-04-koerper.png differ diff --git a/20220519/mathe-20220519-05-koerper.png b/20220519/mathe-20220519-05-koerper.png new file mode 100644 index 0000000000000000000000000000000000000000..c1251895841c6b5b86356660a2f7c9773939b8d8 Binary files /dev/null and b/20220519/mathe-20220519-05-koerper.png differ diff --git a/20220519/mathe-20220519-06-koerper.png b/20220519/mathe-20220519-06-koerper.png new file mode 100644 index 0000000000000000000000000000000000000000..789d5469a6376c5a61dcb816fc85aaa01ac6a7b3 Binary files /dev/null and b/20220519/mathe-20220519-06-koerper.png differ diff --git a/20220519/mathe-20220519.xcf.gz b/20220519/mathe-20220519.xcf.gz new file mode 100644 index 0000000000000000000000000000000000000000..130f38c732ada5e921200568f0929f233479f67a Binary files /dev/null and b/20220519/mathe-20220519.xcf.gz differ