====== Cäsar ====== 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. ===== mehrfache Anwendung ===== 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... ====== Beispiele ====== ===== Beispiel 1 ===== Verschlüsselt man den Text Uni Brachbach bespielsweise mit dem Schlüssel 5, ergibt sich als verschlüsselter Text: ZSNGWFHMGFHM ===== Beispiel 2 ===== Wie lautet der verschlüsselte Text, wenn Kryptologie mit einem Schlüssel von 9 verschlüsselt werden soll? ===== Beispiel 3 ===== Der Text Informatik ist toll ergibt verschlüsselt: TYQZCXLETVTDEEZWW Welcher Schlüsselt wurde verwendet? ===== Beispiel 4 ===== Ein verschlüsselter Text lautet: KYVZEWFIDRKZBSLTY Wie lautet der Originaltext? ===== Cäsar spricht Java ===== 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; }