Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
gf_informatik:verschluesselung [2022-02-24 22:50] – [Aufgabe 2 (Optional): Substitution] hof | gf_informatik:verschluesselung [2022-03-30 05:07] (aktuell) – hof | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Verschlüsselung ====== | ====== Verschlüsselung ====== | ||
- | ## Caesar-Verschlüsselung | + | * [[gf_informatik: |
+ | * [[gf_informatik: | ||
+ | * [[gf_informatik: | ||
+ | * [[gf_informatik: | ||
+ | * [[gf_informatik: | ||
+ | * [[gf_informatik: | ||
+ | * [[gf_informatik: | ||
- | Bei der Caesar-Verschlüsselung werden alle Buchstaben um eine Anzahl Stellen verrückt: | ||
- | |||
- | {{ : | ||
- | |||
- | ### Aufgabe 1: Caesar-Verschlüsselung in Python | ||
- | |||
- | Schreibe eine Funktion `caesar(klartext, | ||
- | * Gebe nur Grossbuchstaben aus. | ||
- | * Zeichen, die keine Buchstaben sind, sollen nicht verändert werden. | ||
- | * Wie kannst du das Chiffrat (den Ciphertext) entschlüsseln? | ||
- | |||
- | #### Ein paar Tipps | ||
- | |||
- | Du kannst über die Buchstaben eines Strings laufen wie über die Elemente einer Liste: | ||
- | |||
- | <code python> | ||
- | s = "Hallo KSR" | ||
- | for buchstabe in s: | ||
- | print(buchstabe) | ||
- | </ | ||
- | |||
- | Einen String in Grossbuchstaben umwandeln: | ||
- | |||
- | <code python> | ||
- | print(" | ||
- | >>> | ||
- | </ | ||
- | |||
- | Alle Grossbuchstaben können in `string.ascii_uppercase` abgefragt werden. Mit [[https:// | ||
- | |||
- | <code python> | ||
- | import string | ||
- | |||
- | for buchstabe in " | ||
- | print(string.ascii_uppercase.find(buchstabe)) | ||
- | |||
- | >>> | ||
- | 7 | ||
- | 0 | ||
- | 11 | ||
- | 11 | ||
- | 14 | ||
- | </ | ||
- | |||
- | Der Modulo-Operator `%` gibt uns den Rest der Ganzzahl-Division zurück. Das ist praktisch, um den Index wieder bei `A` starten zu lassen, wenn er grösser als `Z` wird: | ||
- | <code python> | ||
- | import string | ||
- | |||
- | klartext = " | ||
- | index = string.ascii_uppercase.find(klartext) | ||
- | index += 3 | ||
- | index = index % len(string.ascii_uppercase) | ||
- | ciphertext = string.ascii_uppercase[index] | ||
- | print(ciphertext) | ||
- | |||
- | >>> | ||
- | </ | ||
- | |||
- | ### Aufgabe 2 (Optional): Substitution | ||
- | Statt einer fixen Verschiebung soll jeder Buchstabe durch einen beliebigen anderen ersetzt werden. Der _Schlüssel_ ist also nicht mehr einfach eine Zahl `n`, sondern ein String mit Länge 26, der für jeden Buchstaben A-Z dessen Entsprechung enthält. | ||
- | |||
- | Schreibe eine Funktion `substitution(klartext, | ||
<nodisp 2> | <nodisp 2> |