Schon gewusst?

Caesar / Rot13

Länge:
Schlüssel:
Länge:



Diese Anwendung ist auch mit Python-Quellcode verfügbar, der durch eine lokale Laufzeitumgebung in Ihrem Browser läuft. Sie können den Code bearbeiten und es werden die Eingabewerte aus den oberen GUI-Komponenten verwendet. Probieren Sie es gerne aus:
Solange der Python-Code sichtbar ist, wird dieser zum Ver- und Entschlüsseln verwendet. Um wieder die standardmäßige JavaScript-Implementierung zu verwenden, blenden Sie die Python-Implementierung einfach wieder aus. Der unten stehende Code kann bearbeitet werden, sodass Sie damit experimentieren können. Sie können den Code auch herunterladen und in einem lokalen Terminal auf Ihrem Computer ausführen.
Lokale Python-Laufzeitumgebung wird geladen ...
Konsolen-Befehl:
Schriftgröße:

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
Hinweis: Bei 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)


Referenzen

[1] Codemirror: https://codemirror.net/