**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(klartext, schluessel)
, die den so verschlüsselten Text zurückgibt. Braucht es eine separate Funktion für die Dechiffrierung?