-
Erklärung
Erfahre alles über die Geschichte und Funktionsweise der Caesar-Verschlüsselung.
-
Testen
Teste die Caesar-Verschlüsselung selbst aus.
-
Kryptoanalyse
Nutze Brute Force und Häufigkeitsanalyse, um die Caesar-Verschlüsselung zu entziffern.
-
Code
Programmiere die Verschlüsselung mithilfe unseres interaktiven Tutorials.
-
Weiterlesen
Links, um mehr über die Caesar-Verschlüsselung zu erfahren.
Caesar-Verschlüsselung
Was dich erwartet
Erklärung
Die Caesar-Verschlüsselung ist ein altes Verschlüsselungsverfahren, das wohl schon Caesar für die Verschlüsselung nutzte. Es handelt sich bei diesem Verfahren um ein monoalphabetisches Substitutionsverfahren. Das bedeutet, dass jeder Buchstabe im Klartext durch ein einzelnes Geheimtextalphabet zu einem anderen Buchstaben in der Verschlüsselung wird.
Gaius Julius Caesar lebte von 100 v. Chr. bis 44 v. Chr. und war ein für die römische Geschichte bedeutender Feldherr und Alleinherrscher Roms.
Als Vorbereitung für die Ver- und Entschlüsselung muss zunächst ein Schlüssel zwischen 1 und 25 (oder der Länge des verwendeten Alphabets - 1) festgelegt werden. Wir nehmen hier den Schlüssel 3, den auch Caesar verwendet haben soll.
Nun wird das Klartextalphabet aufgeschrieben.
Das Klartextalphabet beschreibt die Reihenfolge und Menge der Zeichen, die im Klartext vorhanden sein dürfen. Analog beschreibt das Geheimtextalphabet Reihenfolge und Menge der Zeichen, die im Geheimtext vorhanden sein dürfen.
abcdefghijklmnopqrstuvwxyz
Unter das Klartextalphabet schreibt man anschließend das Geheimtextalphabet. Dieses entspricht dem Klartextalphabet, jedoch wird es um den Schlüssel nach rechts verschoben. Da unser Schlüssel 3 ist, wird das Alphabet um 3 Buchstaben verschoben. Statt mit dem a beginnt das Geheimtextalphabet also mit dem d.
abcdefghijklmnopqrstuvwxyz
defghijklmnopqrstuvwxyzabc
Wie im Beispiel zu erkennen, wird nach dem z wieder beim a begonnen, sodass Klartext- und Geheimtextalphabet die gleiche Länge besitzen. Statt einer Zahl als Schlüssel, kann bei dieser Verschlüsselung auch der Buchstabe angegeben werden, mit dem das Geheimtextalphabet beginnt. In unserem Beispiel wäre der Schlüssel dann d.
Verschlüsselt man eine Nachricht, sucht man nacheinander die Buchstaben des Klartextes im Klartextalphabet, und liest den darunter stehenden Buchtaben im Geheimtextalphabet ab.
caesar
↓↓↓↓↓↓
fdhvdu
Zum Entschlüsseln wird das Ganze umgekehrt durchgeführt. Nacheinander wird jeder Geheimtext-Buhstabe gesucht und darüber der Klartextbuchstabe abgelesen und notiert.
fdhvdu
↓↓↓↓↓↓
caesar
Zur Vereinfachung werden meist nur Kleinbuchstaben verwendet. Hier hast du allerdings auch die Möglichkeit, dein eigenes Alphabet zu definieren.
Testen
Wenn du dich nicht nur auf Kleinbuchstaben begrenzen möchtest, kannst du hier ein eigenes Klartextalphabet eingeben.
Definiere den Schlüssel als Anzahl der Verschiebungen, abhängig vom oben gewählten Alphabet.
Mit deinem gewählten Schlüssel wird ein a im Klartext zu einem d im Geheimtext.
Kryptoanalyse
Es ist nicht schwer, die Caesar-Verschlüsselung zu knacken, denn die Anzahl der möglichen Schlüssel wird direkt von der Länge des verwendeten Alphabets beschränkt. Geht man vom lateinischen Alphabet aus, so gibt es nur 25 mögliche Schlüssel, die man auch einfach durchprobieren kann, bis der entschlüsselte Text logisch klingt.
Auch mit einer Häufigkeitsanalyse kann die Caesar-Verschlüsselung, wie jede monoalphabetische Substitution geknackt werden. Da sich die Häufigkeit eines Buchstabens nicht ändert, kann auf den Schlüssel zurückgeschlossen werden. Im Deutschen und Englischen beispielsweise ist das e der häufigste Buchstabe. Ist im verschlüsselten das h am häufigsten, so ist der Schlüssel vermutlich 3 (e -> h). Statt sich nur den häufigsten Buchstaben anzuschauen, kann man auch alle Buchstaben betrachten und, im Fall der Caesar-Verschlüsselung, einen Verschub ermitteln.
Code
Als Basis für den Code erstellen wir ein Objekt mit dem Namen Caesar. Damit können wir alle wichtigen Funktionen, die für die Caesar-Verschlüsselung wichtig sind, bündeln.
Fügen wir nun die benötigten Funktionen hinzu. Eine zum Verschlüsseln, eine zum Entschlüsseln und eine, die später wichtig sein wird, um zu überprüfen, ob der Schlüssel richtig gesetzt wurde. (Nur für den Fall, dass jemand zum Beispiel einen Satz als Schlüssel wählen möchte...)
Der Funktion zum Verschlüsseln übergeben wir den Klartext, den Schlüssel, das verwendete Alphabet, das standardmäßig das lateinische Alphabet ist, und einen Wahrheitswert, der angibt, was mit Buchstaben passiert, die nicht im Alphabet sind.
Die gleichen Parameter erhält auch die Funktion zum Entschlüsseln.
Der Funktion checkKey übergeben wir den Schlüssel und das Alphabet. Schauen wir uns einmal an, was genau diese Funktion macht.
Zuerst stellt sie sicher, dass eine Ganzzahl als Schlüssel übergeben wurde.
Dann begrenzt sie den Schlüssel auf die Länge des Alphabets und gibt den angepassten Schlüssel zurück.
Diese Funktion ist perfekt, um zu überprüfen, ob den Funktionen zum Ver- und Entschlüsseln angemessene Schlüssel übergeben wurden. Deswegen fügen wir sie zu Beginn der einen Funktion hinzu.
Und natürlich auch zu Beginn der zweiten.
Wenden wir uns nun der Funktion zum Verschlüsseln zu. Zuerst erstellen wir eine Variable für den Geheimtext, die wir output nennen. Genau dieser Geheimtext wird dann am Ende der Funktion wieder zurückgegeben.
Um jeden Buchstaben zyklisch zu verschieben, werden wir mit einer Zählschleife durch jeden Buchstaben des Klartextes “zählen”.
Für jeden Buchstaben des Klartextes sucht das Programm die Stelle im Alphabet, an der der Buchstabe auftaucht, und addiert den Schlüssel. Dieser wird wieder auf die Länge des Alphabets begrenzt, man fängt also wieder von vorne an, wenn man am Ende angekommen ist.
Zum Abschluss wird noch dem Geheimtext der Buchstabe hinzugefügt, der an der neuen Stelle im Alphabet steht.
Jetzt müssen wir noch den Fall abfangen, dass der Buchstabe gar nicht im Alphabet ist. In diesem Fall überspringen wir ihn, oder fügen ihn unverschlüsselt an den Geheimtext an, je nachdem was beim Parameter skip angegeben wurde.
In der Funktion zum Entschlüsseln passiert im Grunde das gleiche.
Anders ist hier jedoch, dass der Schlüssel von der Stelle im Alphabet subtrahiert wird.
Somit wird die Stelle auch anders innerhalb des Alphabets gehalten.
Das wars! 🎉