Caesar


Schlüssel:
python caesar.py --key 1 --alphabet 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' --encrypt  --message 'Hallo, das ist ein Test. Bitte geben Sie Ihren Text hier ein.' --keep-non-alp
Ein Design wählen:
Schriftgröße:
Länge:

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 Schlüsselwert der Chiffre. 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 chiffriert zu: „Ehlvslho“. Das obere Alphabet nennt man 'Klartext-Alphabet', 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.



Referenzen

● Caesar-Code: https://de.wikipedia.org/wiki/Caesar-Verschl%C3%BCsselung

Ü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. Folgende Parameter können über die GUI gändert werden:

  • der einzugebende Text
  • ob der eingegebene Text ver- oder entschlüsseln werden soll
  • der Schlüssel
  • das Alphabet
  • ob nicht im Alphabet enthaltene Zeichen beibehalten werden sollen
  • ob der ausgegebene Text in Fünfer-Blöcken ausgegeben werden soll.

Diese GUI-Parameter werden über die Kommandozeile an das Python-Program übergeben. Änderungen in der GUI ändern die jeweiligen Kommandozeilenparameter.

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

Der auf dieser Seite vorhandene Editor wurde mit CodeMirror [1] umgesetzt. Für die Ausführung des Python-Codes wird Pyodide [2] verwendet. 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.

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/



Drucken