Station - Chiffrierung mit dem Verschiebeverfahren
Das Caesar-Verfahren
Der römische Staatsmann und Feldherr Julius Caesar (* 100 v. Chr. in Rom; † 44 v. Chr. in Rom) benutzte ein einfaches Verfahren zum Verschlüsseln von Nachrichten. Er ließ jeden Buchstabe durch einen im Alphabet um 3 Einheiten verschobenen Buchstaben ersetzen.
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
Das folgende Beispiel zeigt das Resultat seiner Verschlüsselungsmethode.
S A L V E A S T E R I X | | | | | | | | | | | | V D O Y H D V W H U L A
Aufgabe 1
(a) Entschlüssele die in der Abbildung gezeigte Antwort von Asterix.
(b) Verschlüssele analog eine selbst gewählte Nachricht. Gib sie an deine Nachbarin / deinen Nachbarn weiter. Sie / er soll die verschlüsselte Nachricht dann wieder entschlüsseln.
Das Verschiebeverfahren
Das von Caesar benutzte Chiffrierverfahen wird etwas flexibler, wenn man die Verschiebezahl frei wählen kann. Im folgenden Beispiel wird z.B. die Verschiebezahl 7 benutzt:
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 | | | | | | | | | | | | | | | | | | | | | | | | | | H I J K L M N O P Q R S T U V W X Y Z A B C D E F G
Das Verschiebeverfahren lässt sich mit CrypTool 1 ausprobieren.
Mit [Datei][Neu] kann man den zu verschlüsselnden Text eingeben.
Mit [Ver-/Entschlüsseln][Symmetrisch (klassisch)][Caesar / Rot-13...] öffnet sich ein Fenster, in dem man die Verschiebezahl (und weitere Parameter) einstellen kann.
Mit [Verschlüsseln] bzw. [Entschlüsseln] kann man jetzt die gewünschte Chiffrieroperation ausführen.
Aufgabe 2
Gib einen Text (der nur aus Großbuchstaben besteht) ein. Verschlüssele anschließend diesen Text mit einer gewählten Verschiebezahl und speichere den Geheimtext ab. Gib diesen Geheimtext und den benutzten Schlüssel (Verschiebezahl) an deine Nachbarin / deinen Nachbarn zum Entschlüsseln weiter.
Vorbereitung von Texten
Wir werden hier mit Texten arbeiten, die nur aus Großbuchstaben bestehen. Solche Klartexte
enthalten insbesondere keine Umlaute, keine Leerzeichen und auch keine Satzzeichen.
Wenn du einen beliebigen Quelltext verschlüsseln möchtest, dann kanst du ihn mit dem folgenden Python-Programm in einen Klartext aus Großbuchstaben umwandeln.
# -*- coding: iso-8859-1 -*-
def bereinigterText(text):
# klar: beliebige Zeichenkette
# return: Zeichenkette, die nur aus Grossbuchstaben besteht
# Beispiel:
"""
>>> bereinigterText('Wie spät ist es?')
'WIESPAETISTES'
"""
textNeu = ''
for zeichen in text:
if ord(zeichen) >= ord('A') and ord(zeichen) <= ord('Z'):
# zeichen ist ein Großbuchstabe
textNeu = textNeu + zeichen
elif ord(zeichen) >= ord('a') and ord(zeichen) <= ord('z'):
# zeichen ist ein Kleinbuchstabe
neuesZeichen = chr(ord(zeichen)-32)
textNeu = textNeu + neuesZeichen
elif zeichen == 'Ä' or zeichen == 'ä':
textNeu = textNeu + 'AE'
elif zeichen == 'Ö' or zeichen == 'ö':
textNeu = textNeu + 'OE'
elif zeichen == 'Ü' or zeichen == 'ü':
textNeu = textNeu + 'UE'
elif zeichen == 'ß':
textNeu = textNeu + 'SS'
return textNeu
def textAusDatei(dateiname):
# dateiname: Name der Datei
# return: Inhalt der Datei als Zeichenkette
datei = open(dateiname, 'r', encoding='iso-8859-1')
text = datei.read()
datei.close()
return text
def textInDateiSpeichern(dateiname, text):
# dateiname: Name der Datei
# text: Zeichenkette, die abgespeichert werden soll
datei = open(dateiname, 'w', encoding='iso-8859-1')
datei.write(text)
datei.close()
# Test
quelltext = textAusDatei('test.txt')
print(quelltext)
klartext = bereinigterText(quelltext)
print(klartext)
textInDateiSpeichern('test_klar.txt', klartext)
Aufgabe 3
Benutze das Python-Programm zur Vorbereitung eines beliebigen Quelltextes. Beachte, dass der Quelltext in der richtigen Codierung (hier: iso-8859-1) abgespeichert ist. Benutze anschließend CrypTool, um den Text mit dem Verschiebeverfahren zu verschlüsseln.