Gymnasium Löbau/Vertiefungsklasse 2010/Cäsar-Verschlüsselung
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Java</language>
== Vorüberlegungen ==
Wie lassen sich prinzipiell Zeichenketten aus Zeichen bilden?<br />
Wir wollen in dem nachfolgenden Beispiel die Konvertierung eines Zeichens in seinen ASCII-Code und umgekehrt nutzen.
<code id="53aca650d4d6a">
private String Alphabet(int n) {
String Zeichenkette = new String();
char Zeichen = 'A';
for (int i = (int) Zeichen; i < (int) Zeichen + n; i++)
Zeichenkette = Zeichenkette + (char) i;
return Zeichenkette;
}
</code>
<run id="53aca650d4e79">
Alphabet(26);
</run>
== Cäsar-Verfahren ==
Vervollständige die fehlende Programmzeile in der Funktion <tt>CaesarCodieren</tt>.<br />
Beachte dabei, dass diese Funktion sowohl zum Codieren als auch zum Decodieren genutzt wird.
<code id="53aca650d4dea">
private char Wandeln(char Zeichen, int Schritt) {
int Code = (int) Zeichen;
if (Code > 64 && Code < 91) {
Code = Code + Schritt;
while (Code > 90) Code = Code - 26;
while (Code < 65) Code = Code + 26;
return (char) Code;
}
else
return Zeichen;
}
private String CaesarCodieren(String Zeichenkette, int Schritt, int Richtung) {
String Neukette = new String();
char Buchstabe;
Zeichenkette = Zeichenkette.toUpperCase();
for (int i = 0; i < Zeichenkette.length(); i++) {
Buchstabe = Zeichenkette.charAt(i);
//Hier wird die neue Zeichenkette gebildet.
}
return Neukette;
}
private String Codieren(String Zeichenkette, int Schritt) {
return CaesarCodieren(Zeichenkette, 3, 1);
}
private String DeCodieren(String Zeichenkette, int Schritt) {
return CaesarCodieren(Zeichenkette, 3, -1);
}
</code>
<check>
int S = 13;
String Nk = new String("INFORMATIKUNTERRICHT IST TOLL!");
String Zk = DeCodieren(Codieren("Informatikunterricht ist toll!", S), S);
return Zk.trim().equals(Nk);
</check>
<run id="53aca650d4ef9">
Codieren("Hallo Welt!", 3);
</run>
<run id="53aca650d4f71">
DeCodieren("KDOOR ZHOW!", 3);
</run>
== Aufgaben ==
<ol>
<li>
Teste ausführlich das Ver- und Entschlüsseln von Zeichenketten mit dem Cäsar-Verfahren.<br />
Bilde dazu vollständige Sätze, die auch Sonderzeichen enthalten sollen.<br />
Begründe Deine Testergebnisse mit den Implementationen der entsprechenden Funktionen.
</li>
<li>
Begründe, warum das Cäsar-Verfahren zur Geheimhaltung von Informationen ungeeignet ist.
</li>
</ol>