# 3. Kryptologie Bei den hier besprochenen Verfahren geht es nicht um die Kryptoanalyse, d.h. die Beurteilung der Sicherheit der Verfahren, sondern um die Umsetzung der Verfahren in Java. Dabei kommen elementare Inhalte wie Zeichenketten, Felder und vor allem das Verwandeln von char-Buchstaben in int-Zahlen und umgekehrt nach der ASCII-Tabelle zum Tragen. ## Caesar-Verschlüsselung Das wohl bekannteste Verschlüsselungsverfahren geht auf Julius Caesar zurück. Er verschob die Buchstaben des Alphabets einfach um eine feste Anzahl von Buchstaben. Jedem Klartextbuchstaben wird damit ein verschobener Geheimtextbuchstabe zugeordnet. Bei der Entschlüsselung geschieht die Verschiebung dann in entgegengesetzter Richtung. ### Einfache Umsetzung Die folgende Umsetzung greift den Gedanken auf und ordnet im Rahmen einer switch-Anweisung die Buchstaben einander zu. Bei der zugehörigen Entschlüsselungsmethode würde die Anordnung entgegengesetzt erfolgen. ```java public String verschluesseleEinfach(String klartext) { String ergebnis = ""; for (int i=0; i90) { zahl = zahl - 26; } if (zahl<65) { zahl = zahl + 26; } char zeichen = (char) zahl; ergebnis = ergebnis + zeichen; } return ergebnis; } public String entschluessele(String zeichenkette, int schluessel) { return verschluessele(zeichenkette, -schluessel); } ``` ## Monoalphabetische Substitution Da die Verschiebung des Alphabets durch die Caesar-Verschlüsselung zu wenig Sicherheit bietet, ordnet die monoalphabetische Substitution jedem Buchstaben des Alphabets zufällig einen anderen Buchstaben des Alphabets zu. Es ergeben sich 26! mögliche Schlüssel. ### Einfache Umsetzung Auch hier ist zunächst wieder eine Zuordnung der Buchstaben in einer switch-Anweisung denkbar: ```java public String verschluessele(String klartext) { String ergebnis = ""; for (int i=0; i= schluesselwort.length()) { schluessel_pos = 0; } } return ergebnis; } ```