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>