Das Caesar-Verfahren automatisieren

Verschlüsselung von Texten mit der Verschiebemethode

Asterix und Caesar

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

X

Fehler melden

X

Suche