**Dies ist eine alte Version des Dokuments!**
Verschlüsselung
Caesar-Verschlüsselung
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, n), die die Cäsar-Verschlüsselung umsetzt.
- 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:
s = "Hallo KSR" for buchstabe in s: print(buchstabe)
Einen String in Grossbuchstaben umwandeln:
print("Hallo KSR".upper()) >>> HALLO KSR
Alle Grossbuchstaben können in string.ascii_uppercase abgefragt werden. Mit str.find() können wir den Index (oder -1) finden:
import string for buchstabe in "HALLO": 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:
import string klartext = "Z" index = string.ascii_uppercase.find(klartext) index += 3 index = index % len(string.ascii_uppercase) ciphertext = string.ascii_uppercase[index] print(ciphertext) >>> C
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(cleartext, key), die den so verschlüsselten Text zurückgibt. Braucht es eine separate Funktion für die Dechiffrierung?