Gymnasium Löbau/Vertiefungsklasse 2015/Cäsar-Verschlüsselung
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Javascript</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="5ce79166bcc3c">
function Alphabet(n) {
var Zeichenkette = new String();
var Zeichen = 'A';
var Code = Zeichen.charCodeAt(0);
for (var i = 0; i < n; i++)
Zeichenkette = Zeichenkette + String.fromCharCode(Code + i);
return Zeichenkette;
}
</code>
<run id="5ce79166bcd81">
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="5ce79166bccb0">
function Wandeln(Zeichen, Schritt) {
var Code = Zeichen.charCodeAt(0);
if (Code > 64 && Code < 91) {
Code = Code + Schritt;
if (Code > 90) Code = Code - 26;
if (Code < 65) Code = Code + 26;
return String.fromCharCode(Code);
}
else
return Zeichen;
}
function CaesarCodieren(Zeichenkette, Schritt, Richtung) {
var Neukette = "";
Zeichenkette = Zeichenkette.toUpperCase();
for (var i = 0; i < Zeichenkette.length; i++) {
var Buchstabe = Zeichenkette[i];
//Hier wird die neue Zeichenkette gebildet.
}
return Neukette;
}
function CaesarVerschluesseln(Zeichenkette, Schritt) {
return CaesarCodieren(Zeichenkette, Schritt, 1);
}
function CaesarEntschluesseln(Zeichenkette, Schritt) {
return CaesarCodieren(Zeichenkette, Schritt, -1);
}
</code>
<code id="5ce79166bcd15" hidden>
var S = 13;
var Nk = new String("INFORMATIKUNTERRICHT IST TOLL!");
var Zk = CaesarEntschluesseln(CaesarVerschluesseln("Informatikunterricht ist toll!", S), S);
</code>
<check execute="Zk == Nk">true</check>
<run id="5ce79166bcddc">
CaesarVerschluesseln("Hallo Welt!", 3);
</run>
<run id="5ce79166bce31">
CaesarEntschluesseln("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>