Bergervei/Javascript-Verschlüsselungsverfahren

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Javascript</language>
== Einfache Verschlüsselungsverfahren ==

=== Zickzack-Verfahren ===

<code id="5bccfc2fea985">
function ZickzackCodieren(Zeichenkette) {
 var Len = Zeichenkette.length;
 var Txt1 = "";
 var Txt2 = "";
 for (var i = 0; i < Len; i++)
  if (i % 2 == 0)
   Txt1 = Txt1 + Zeichenkette[i];
  else
   Txt2 = Txt2 + Zeichenkette[i];
 return Txt1 + Txt2;
}

function ZickzackDecodieren(Zeichenkette) {
 var Len = Zeichenkette.length, N = Math.round(Len / 2);
 var Txt1 = Zeichenkette.substr(0, N);
 var Txt2 = Zeichenkette.substr(N);
 var Txt = "";
 for (var i = 0; i < N; i++) {
  Txt = Txt + Txt1[i];
  if (i < Txt2.length)
   Txt = Txt + Txt2[i];
 }
 return Txt;
}
</code>

<run id="5bccfb730cc0d">
ZickzackCodieren("Brisante Texte müssen verschlüsselt werden!");
</run>

<run id="5bccfb730cc74">
ZickzackDecodieren("Biat et üsnvrclsetwre!rsneTxemse eshüsl edn");
</run>

== Symmetrische Verschlüsselungsverfahren ==

=== Cäsar-Verfahren ===

<code id="5bccfb730cb08">
function Wandeln(Zeichen, Schritt) {
 var Code = Zeichen.charCodeAt();
 if (Code > 64 && Code < 91) {
  Code = Code + Schritt;
  while (Code > 90) Code = Code - 26;
  while (Code < 65) Code = Code + 26;
  return String.fromCharCode(Code);
 }
 else
  return Zeichen;
}

function CaesarCodieren(Zeichenkette, Schluesselbuchstabe, Richtung) {
 var Neukette = "";
 Zeichenkette = Zeichenkette.toUpperCase();
 Schluesselbuchstabe = Schluesselbuchstabe.toUpperCase();
 for (var i = 0; i < Zeichenkette.length; i++) {
  var Buchstabe = Zeichenkette.substr(i, 1);
  var Schritt = Schluesselbuchstabe.charCodeAt() - 65;
  Neukette = Neukette + Wandeln(Buchstabe, Richtung * Schritt);
 }
 return Neukette;
}

function CaesarVerschluesseln(Zeichenkette, Schluesselbuchstabe) {
 return CaesarCodieren(Zeichenkette, Schluesselbuchstabe, 1);
}

function CaesarEntschluesseln(Zeichenkette, Schluesselbuchstabe) {
 return CaesarCodieren(Zeichenkette, Schluesselbuchstabe, -1);
}
</code>

<run id="4f02160f2aa0c">
CaesarVerschluesseln("Hallo Welt!", "B");
</run>

<run id="4f02160f2aa6a">
CaesarEntschluesseln("IBMMP XFMU!", "B");
</run>

=== Vigenère-Verfahren ===

<code id="5bccfb730cb94">
function VigenereCodieren(Zeichenkette, Schluessel, Richtung) {
 var Neukette = ""; 
 var j = 0;
 Zeichenkette = Zeichenkette.toUpperCase();
 Schluessel = Schluessel.toUpperCase();
 for (var i = 0; i < Zeichenkette.length; i++) { 
  var Buchstabe = Zeichenkette.substr(i, 1);
  var Schluesselbuchstabe = Schluessel.substr(j, 1);
  var Schritt = Schluesselbuchstabe.charCodeAt() - 65;
  Neukette = Neukette + Wandeln(Buchstabe, Richtung * Schritt);
  j = (j + 1) % Schluessel.length; 
 }
 return Neukette;
}

function VigenereVerschluesseln(Zeichenkette, Schluessel) {
 return VigenereCodieren(Zeichenkette, Schluessel, 1);
}

function VigenereEntschluesseln(Zeichenkette, Schluessel) {
 return VigenereCodieren(Zeichenkette, Schluessel, -1);
}
</code>

<run id="4f02160f2aac5">
VigenereVerschluesseln("Hallo Welt!", "ABBA");
</run>

<run id="4f02160f2ab21">
VigenereEntschluesseln("HBMLO XELU!", "ABBA");
</run>