Gaius Iulius Caesar soll Nachrichten an seine Feldherren auf folgende Weise verschlüsselt haben: Er notierte seine Nachrichten, indem er jeden Buchstaben durch beispielsweise seinen 5 Nachfolger austauschte. Am Ende des Alphabets angelangt, begann er wieder vorne.
Man kann sich das Alphabet am Einfachsten als ein ringförmig zusammengeklebtes Band vorstellen, auf dem das A
sofort wieder nach dem Z
folgt. So besitzt jeder Buchstabe beliebig viele Nachfolger.
Satzzeichen, Kleinbuchstaben und Leerzeichen werden nicht berücksichtigt.
Um die Sicherheit zu erhöhen, könnte man auf den Gedanken kommen, dass Verfahren mehrfach anzuwenden. Die Sicherheit wird allerdings dadurch keinesfalls erhöht. Verschlüsselt man beispielsweise einen Text mit n und anschließend nochmal mit m, kann man äquivalent dazu auch sofort mit n+m verschlüsseln. Das wäre sogar einfacher und schneller. Im Extremfall, wenn die Summe der einzelnen Schlüssel ein Vielfaches von 26 ist, ergibt sich durch das Verschlüsseln sogar wieder der Originaltext - was hoffentlich spätestens dann auffällt…
Verschlüsselt man den Text
Uni Brachbach
bespielsweise mit dem Schlüssel 5, ergibt sich als verschlüsselter Text:
ZSNGWFHMGFHM
Wie lautet der verschlüsselte Text, wenn
Kryptologie
mit einem Schlüssel von 9 verschlüsselt werden soll?
Der Text
Informatik ist toll
ergibt verschlüsselt:
TYQZCXLETVTDEEZWW
Welcher Schlüsselt wurde verwendet?
Ein verschlüsselter Text lautet:
KYVZEWFIDRKZBSLTY
Wie lautet der Originaltext?
public static String caesar(String original, int schluessel) { String geheimText = ""; int num; original = original.toUpperCase();//nur Grossbuchstaben if (schluessel >= 0) { for (int i = 0; i < original.length(); i++) { num = original.charAt(i); if (num == ' '); //Filtern der Leerzeichen else { num += schluessel; if (num > 90) { num -= 26; //Zurueck ins Alphabet } geheimText += (char) num; //Aufbau des Geheimtextes } } } else { for (int i = 0; i < original.length(); i++) { num = original.charAt(i); if (num == ' '); else { num += schluessel; if (num < 65) { num += 26; } geheimText += (char) num; } } } return geheimText; }