Caesar / Rot13
Verschiebechiffre, welche von Julius Caesar genutzt wurde
Hintergrund
Der Name Caesar-Chiffre stammt von dem gleichnamigen Feldherren Gaius Julius Caesar (100 v. Chr. – 44 v. Chr.). Caesar (manchmal im Deutschen auch Cäsar geschrieben) benutzte diese sehr einfache Form der Verschlüsselung, um militärische Nachrichten zu chiffrieren.
Beschreibung des Verfahrens
Es kann ein beliebiges Alphabet verwendet werden. Die klassische Version benutzt die Großbuchstaben A-Z. Das Alphabet wird zweimal, untereinander aufgeschrieben.
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 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
Nun wird das untere Alphabet um eine beliebige Anzahl Stellen verschoben. Diese Anzahl von Stellen ist der Wert des Schlüssels. Eine Verschiebung um 3 nach links, also mit dem Schlüssel 3, ergibt folgende Ansicht:
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
Ein A
wird somit zu einem D
, ein B
zu einem E
, ein C
zu einem F
, usw. Das Wort Beispiel
würde somit unleserlich zu Ehlvslho
chiffriert. Das obere Alphabet nennt man "Klartext-Alphabet" und das untere Alphabet nennt man "Geheimtext-Alphabet".
Sicherheitsbetrachtung
Die Anzahl der möglichen Schlüssel bei der Caesar-Chiffre ist identisch mit der Länge des verwendeten Alphabets. Das bedeutet, dass im Falle eines Alphabets mit Großbuchstaben von A-Z lediglich 26 Schlüssel möglich sind, wobei der 26. Schlüssel keinen Sinn ergibt, denn dieser würde A
auf A
, B
auf B
usw. abbilden, womit sich keine Chiffrierung ergibt. Bei lediglich 25 sinnvollen Schlüsseln ist e s also kein allzu großer Aufwand, alle Schlüssel zu testen, bis sich ein sinnvoller Klartext ergibt (Brute-Force-Analyse). Auch mit einer Häufigkeitsanalyse lässt sich die Chiffre sehr schnell brechen.
Interne Arbeitsweise der lokalen Python-Version
Über den Code
In diesem Plugin kann man das Verschlüsselungs-Verfahren auf 2 Arten steuern:
- über die Oberfläche (GUI)
- über die Kommandozeilen-Argumente für das dahinterliegende Python-Programm
Der Python-Code wird also rein lokal in Ihrem Browser ausgeführt, ohne dass Sie eine Python-Entwicklungsumgebung installieren müssen, aber auch ohne, dass der Python-Code irgendwo in der Cloud ausgeführt werden muss. Die in der GUI eingestellten Parameter werden über die Kommandozeile an das Python-Program übergeben. Änderungen in der GUI ändern die jeweiligen Kommandozeilenparameter. Folgende Parameter können eingestellt werden:
Grafisches Element | Terminal-Parameter | Variable im Code |
---|---|---|
der einzugebende Text | --message | text |
ob der eingegebene Text ver- oder entschlüsseln werden soll | --encrypt / --decrypt | b_encrypt |
der Schlüssel | --key | key |
das Alphabet | --alphabet | alphabet |
ob nicht im Alphabet enthaltene Zeichen beibehalten werden sollen | --keep-non-alp | b_keep_chars |
ob der auszugebende Text in Fünfer-Blöcken ausgegeben werden soll | --blocks-of-five | b_block_of_five |
b_keep_chars=True
und b_block_of_five=True
und b_encrypt=True
werden Leerzeichen entfernt, auch wenn sie nicht im Alphabet sind, damit es keine Leerzeichen innerhalb der 5er-Blöcke gibt. Der Code ist eine einfache Umsetzung der Caesar-Verschlüsselung in Python. Jedes Eingabezeichen wird in Großschreibung konvertiert und dann verarbeitet. Bei der Verschlüsselung wird das Lateinische Alphabet benutzt. Für jedes Zeichen im zu verschlüsselnden Text wird ermittelt, ob das Zeichen im vorgegebenen Alphabet zu finden ist. Wenn das Zeichen im Alphabet zu finden ist, wird mit Hilfe des Schlüssels das neue Zeichen ermittelt. Für den Fall, dass ein Inputzeichen nicht im Alphabet enthalten ist, wird das Zeichen unverändert übernommen (beispielsweise Sonderzeichen). Wenn man im Ankreuzfeld "Blocks of 5" ein Häkchen setzt, wird die Ausgabe in Fünfer-Blöcken dargestellt.
Über den Editor und die Python-Laufzeitumgebung
Der auf dieser Seite vorhandene Editor wurde mit CodeMirror[1] umgesetzt. CodeMirror ist ein vielseitiger Texteditor, der in JavaScript für den Browser implementiert ist. CodeMirror verfügt über eine Reihe von Addons für verschiedene Programmiersprachen. Für die Ausführung des Python-Codes wird Pyodide[2] verwendet.
Pyodide bringt die Python-Laufzeitumgebung über WebAssembly in den Browser, zusammen mit NumPy, Pandas, Matplotlib, Teilen von SciPy und NetworkX. Im Editor befindet sich damit ein Interpreter für Python 3.x. Welche genaue Python-Version Pyodide nutzt, können Sie sehen, indem Sie folgenden Aufruf im Code ergänzen: print(sys.version)