Das Caesar-Verfahren automatisieren
Verschlüsselung von Texten mit der Verschiebemethode
Das von Caesar benutzte Verschlüsselungsverfahren basiert auf einer Alphabetverschiebung.
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z | | | | | | | | | | | | | | | | | | | | | | | | | | D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
Beim Verschlüsseln wird jeder Buchstabe durch einen im Alphabet um 3 Stellen verschobenen Buchstaben ersetzt.
S A L V E A S T E R I X | | | | | | | | | | | | V D O Y H D V W H U L A
Verschieben von Buchstaben
Das Verschieben von Buchstaben
im Alphabet kann man auch von einem Rechner ausführen lassen.
Der folgende Python-Dialog zeigt, wie das gehen kann:
>>> zeichen = 'A' >>> zeichen 'A' >>> zahl = ord(zeichen) >>> zahl 65 >>> neuezahl = zahl + 3 >>> neuezahl 68 >>> neueszeichen = chr(neuezahl) >>> neueszeichen 'D'
Aufgabe 1
(a) Probiere das auch mit anderen Buchstaben aus.
Kannst du erklären, was die Hilfsfunktionen ord
und chr
leisten?
Tipp: ASCII-Tabelle
(b) Wie kann man ein solches Verschieben von Buchstaben wieder rückgängig machen?
(c) Was muss man beachten, wenn man Buchstaben verschieben will, die sich an den Rändern
des Alphabets
befinden (z.B. verschiebe 'X' um 3 Stellen nach rechts)?
Verschlüsselung von Texten
Ziel ist es jetzt, Texte (die nur aus Großbuchstaben bestehen) zeichenweise nach der oben beschriebenen Methode zu verschlüsseln. Die Texte werden dabei durch Zeichenketten dargestellt.
Das folgende Programm leistet das Gewünschte.
# Initialisierung klartext = 'HALLO' # Verarbeitung geheimtext = '' for zeichen in klartext: zahl = ord(zeichen) neuezahl = zahl + 3 if neuezahl > ord('Z'): neuezahl = neuezahl - 26 neuesZeichen = chr(neuezahl) geheimtext = geheimtext + neuesZeichen # Ausgabe print(geheimtext)
Aufgabe 2
(a) Teste erst einmal das Programm. Analysiere anschließend detailliert das Programm und kommentiere die einzelnen Zeilen.
(b) Entwickle analog ein Programm zur Entschlüsselung von Texten, die nach dem Caesar-Verfahren verschlüsselt wurden.
Vorbereitung von Texten
Wir sind bisher davon ausgegangen, dass ein vorgegebener Text nur aus Großbuchstaben besteht. Einen beliebigen Text müsste man erst einmal in einen Text aus Großbuchstaben umwandeln, um das Verschlüsselungsverfahren anwenden zu können. Wir gehen dabei nach folgendem Verfahren vor:
Alle Kleinbuchstaben werden in entsprechende Großbuchstaben umgewandelt. Alle Umlaute und das scharfe s werden durch Kleinbuchstaben ersetzt. (z.B.: ä -> ae; ß -> ss). Alle Leerzeichen und alle Sonderzeichen werden weggelassen.
Das folgende Programmgerüst soll bei der automatisierten Vorbereitung von Texten helfen.
# Vorgabe
text = 'Dieser Text müßte "bereingt" werden.'
# Verarbeitung
textNeu = ''
for zeichen in text:
if ord(zeichen) >= ord('A') and ord(zeichen) <= ord('Z'):
# zeichen ist ein Großbuchstabe
textNeu = textNeu + zeichen
# ...
# Ausgabe
print(text)
print(textNeu)
Aufgabe 3
Ergänze den fehlenden Teil so, dass die unten gezeigten Ausgaben erzeugt werden.
>>> Dieser Text müßte "bereinigt" werden. DIESERTEXTMUESSTEBEREINIGTWERDEN
Quellen
Zeichnung: Portrait Julius Caesar - Urheber: Amadscient - Lizenz: public domain