10. Javascript: Texteinbettung in Quatschcode

Diese Abhandlung beschäftigt sich mit der Einbettung von Text in Quatschcode im Rahmen einer eher neuarigen Verschlüsselungstechnik, die alleine schwach ist, aber integriert in eine reguläre Verschlüsselung den Standort von Buchstaben bis zur unendlichkeit verschleiert.

Sie können das in der Demo nachvollziehen, in dem Sie die Demo mit  ihrem Browser bei aktivierten Javascript  öffnen und den Text "Optionen einblenden/ausblenden"  betätigen.

Geben sie dann einen Text und einen beliebig langen Passwortsatz oder Wort ein und betätigen sie dann den  Button  Quatschcode.

Zum dekodieren, also den Text wieder in seine Ursprungsform zu bringen, drücken Sie den danebenliegenden Button Quatschreturn.

Was passierte? Richtig, die Buchstaben und Leerzeichen werden in Dreierblöcken eingebettet, wobei die Stelle des Buchstabens im Dreierblock von der Buchstabenkombination  im Passwort abhängig ist.

Ich stelle im folgenden das Javascript der Funktion vor und wir gehen dann den Code einmal im Schnelldurchlauf vor.

function enc15() {
var mpwstz="satzeinfght";

var change1 = new Array();
change1[0] = new Array("Tab0","Tab1","Tab2","Tab3","Tab4","Tab5","Tab6","Tab7","Tab8","Tab9","Tab10","Tab11","Tab12","Tab13");
change1[1] = new Array("8","p","J","o","d"," ","L","+"," ","q","x","l","J",":");
change1[2] = new Array("?","q","Z","V","n","6","z",".","f","B","8","t","L","E");
change1[3] = new Array("1","0","u","e","x","Y","S","5","y","s","u","w","T","g");
change1[4] = new Array("D","o","x","3","2","e","c","l","i","o","§"," ","P","y");
change1[5] = new Array("I","P","I","R","+","z","=","0","n","f","P","h","?","m");
change1[6] = new Array("W","(","M","§","k","p","k","s","0","v","S","Y","h","§");
change1[7] = new Array("w","\"","s","c","o","q","d","w","L","z","s","Q","d","L");
change1[8] = new Array("y","F","0","z","-","U","j","/","G","?","E","s","j","8");
change1[9] = new Array("(","w","5","6","S","4","q","U","d","L","W","z","I","9");
change1[10] = new Array(" ",":","A","T",")","H","(","(","s","C","R","N","U","R");
change1[11] = new Array("V","f","4","S","§",",","4","?","B","p","T","B","y","e");
change1[12] = new Array("d","x","1","\"","j","t","D","o","7","h","D",".","-","(");
change1[13] = new Array("n","t","d","1","U","y","G","y","N","E","f","e","(","s");
change1[14] = new Array("A",".",",","P","a","1","W","x","\"","4","2","\"","M","2");
change1[15] = new Array("3","Y","m","0","O","2","!","4","m","k","t",":","=","b");
change1[16] = new Array("4","8","y","u","z","\"","/","j",".","\""," ","p"," ","?");
change1[17] = new Array("\"","u","R"," ","b","!","E","Y","p","S","j","=","r","A");
change1[18] = new Array("E","D","3","Y","B","A","3","E","c","5","h","i",":","q");
change1[19] = new Array(")","C","§","t","0","9","2","J",",","1",",","a","p","I");
change1[20] = new Array("7","U","f","=","3","X","l","!","b","9","B","2","!","u");
change1[21] = new Array("z","?","k","p","5","w","T","3","o","D","i","3","m","!");
change1[22] = new Array("e","g","-","-","f","K","O","q","2","6","U","V","u","X");
change1[23] = new Array(".","X","=","a","F","x","N","=",":","V","M","8","A","Y");
change1[24] = new Array("!","T","v","2",":","k","m","K","t","T","Y","o","R","P");
change1[25] = new Array("6","A","H","v","c","j","1","n","C","m","c",",","E","o");
change1[26] = new Array(",","B","+","U","V","m","A",")","P",",","a","m","V","=");
change1[27] = new Array("g","i","o","!","r","R","M","P","3","a",":","c","f","/");
change1[28] = new Array(":","6","6","s",",","+","o",",","/","3","H","v","D","c");
change1[29] = new Array("N","R","q","A","l","O","a","F","K","g","0","A","+","H");
change1[30] = new Array("k","G","w","m","A","N","5","u","a","M","w","!",")","z");
change1[31] = new Array("u","s",")","n","i","C","6","D","§","r","b","d","4","V");
change1[32] = new Array("a","-","t","?","?","(","I","R","1","2","F","I","b","l");
change1[33] = new Array("b",",","l","E","u","=","e","S","6","n","p","j","o","G");
change1[34] = new Array("/","a","g","M","Q","v"," ","B","W","d","k","(","e","U");
change1[35] = new Array("C","e","B",".","Y","u","p",":","r","O","X","+","k","x");
change1[36] = new Array("§","I","!","l","R","5","s","v","I"," ","9","k","\"","J");
change1[37] = new Array("P","7","O","5","q","o","R","e","-","i","(","L","8","i");
change1[38] = new Array("+","l","2","O","(","F","w","G","9","c","q","W","G","w");
change1[39] = new Array("s","!","T",":","W","S","+","\"","l","Y","3","r","1","1");
change1[40] = new Array("R","5","n","C","C","-","Y","A","Z","P","C","Z","c","C");
change1[41] = new Array("H","V","N","g","K","d","U","i","v","Z","r","D","F","N");
change1[42] = new Array("p","N",".","h","m",".","H","9","X","W","!","O","N","n");
change1[43] = new Array("Q"," ","D","k","!","8","0","§","O","X","o",")","W","O");
change1[44] = new Array("x","4","(","G","J","Z","Q","C","M","t","+","X","9","Q");
change1[45] = new Array("F","E","Q",",","v","L","B","7","(","F","e","K","s","-");
change1[46] = new Array("B","h","h","4","T","T","8","1","w",":","y","4","a",".");
change1[47] = new Array("m","W","V","/","h","W",")","p","R",".","4","n","§",")");
change1[48] = new Array("j","j","?","y","7","§","P","h","J","J","5","g","g","Z");
change1[49] = new Array("9","b","b","Q","t","7","u","W","?","b","Q","R","q",",");
change1[50] = new Array("h","K","X","j","6","B","Z","a","e","w","g","S","6","7");
change1[51] = new Array("L","O","e","B","Z","P","h","H","U","Q","6","f","t","W");
change1[52] = new Array("t","y","i","I","p","0","7","M","5","8","n","b","K","0");
change1[53] = new Array("l","+","G","Z","P","n","V","V","Q","e","-","C","Q","+");
change1[54] = new Array("0","H"," ","X","w","i","F","r","F","-","v","H","w","h");
change1[55] = new Array("O","z","j","b","y","b","t","k","A","I","1","6","H","r");
change1[56] = new Array("-","v","c","F",".","h","?","2","u","G","O","G","2","S");
change1[57] = new Array("Z","3","F","x","L","?","r","m","q","H","J","?","5","D");
change1[58] = new Array("Y","m","r","9","N","/","9","t","S","R","?","u","/","j");
change1[59] = new Array("2","L","7","J"," ","3","n","6","!","!","G","x","S","v");
change1[60] = new Array("J","=","S","+","\"","r",":","d","k","y","\"","9",",","t");
change1[61] = new Array("i","/",":","K","M","g",".","O","Y","§","A","E","7","p");
change1[62] = new Array("X","M","p","D","I",")","v","N","z",")","L","q",".","F");
change1[63] = new Array("G","r","9","w","s","f","\"","L",")","(","K","P","Z","a");
change1[64] = new Array("v","Q","E","8","X","D","i","8","h","7","d","F","v"," ");
change1[65] = new Array("K","1","L","r","g","J","y"," ","H","K","V","T","X","5");
change1[66] = new Array("=","k","/","f","4","s","K","X","8","l",".","M","O","3");
change1[67] = new Array("5","9","\"","i","8","l",",","Q","4","A","N","J","x","d");
change1[68] = new Array("q","Z","P","(","=","Q","x","I","D","=","I","1","B","B");
change1[69] = new Array("f","J","a","q","G","M","C","f","+","0","Z","/","Y","k");
change1[70] = new Array("S","c","8","L","9","G","b","b","T","N","z","U","3","f");
change1[71] = new Array("M","d","K","7","e",":","§","-","x","x","7","0","l","T");
change1[72] = new Array("U",")","z","N","E","c","J","z","V","j","/","y","0","M");
change1[73] = new Array("r","S","C","H","D","V","g","g","g","u","=","5","z","6");
change1[74] = new Array("T","2","Y","d","H","I","f","Z","=","/",")","7","C","K");
change1[75] = new Array("c","§","U","W","1","E","X","T","E","U","l","§","i","\"");
change1[76] = new Array("o","n","W",")","/","a","-","c","j","+","m","-","n","4");



msatz = document.changeForm.dialog.value;
manton=mpwstz;

  while (mpwstz.length < msatz.length) {
  mpwstz+= manton
    }

treffer ="";
wbstb = "";
for (myl=0; myl<msatz.length; myl++)
{
  mpsw = eval("mpwstz.charAt(" +myl+")");

   if (mpsw == "") wbstb = 0;
   if (mpsw == "a") wbstb = 1;
   if (mpsw == "b") wbstb = 2;
   if (mpsw == "c") wbstb = 0;
   if (mpsw == "d") wbstb = 1;
   if (mpsw == "e") wbstb = 2;
   if (mpsw == "f") wbstb = 0;
   if (mpsw == "g") wbstb = 1;
   if (mpsw == "h") wbstb = 2;
   if (mpsw == "i") wbstb = 0;
   if (mpsw == "j") wbstb = 1;
   if (mpsw == "k") wbstb = 2;
   if (mpsw == "l") wbstb = 0;
   if (mpsw == "m") wbstb = 1;
   if (mpsw == "n") wbstb = 2;
   if (mpsw == "o") wbstb = 0;
   if (mpsw == "p") wbstb = 1;
   if (mpsw == "q") wbstb = 2;
  if (mpsw == "r") wbstb = 0;
  if (mpsw == "s") wbstb = 1;
  if (mpsw == "t") wbstb = 2;
  if (mpsw == "u") wbstb = 0;
  if (mpsw == "v") wbstb = 1;
  if (mpsw == "w") wbstb = 2;
  if (mpsw == "x") wbstb = 0;
  if (mpsw == "y") wbstb = 1;
  if (mpsw == "z") wbstb = 2;
  if (mpsw == "0") wbstb = 0;
  if (mpsw == "1") wbstb = 1;
  if (mpsw == "2") wbstb = 2;
  if (mpsw == "3") wbstb = 0;
  if (mpsw == "4") wbstb = 1;
  if (mpsw == "5") wbstb = 2;
  if (mpsw == "6") wbstb = 0;
  if (mpsw == "7") wbstb = 1;
  if (mpsw == "8") wbstb = 2;
  if (mpsw == "9") wbstb = 0;
  if (mpsw == ".") wbstb = 1;
  if (mpsw == "(") wbstb = 2;
  if (mpsw == "A") wbstb = 2;
  if (mpsw == "B") wbstb = 1;
  if (mpsw == "C") wbstb = 0;
  if (mpsw == "D") wbstb = 2;
  if (mpsw == "E") wbstb = 1;
  if (mpsw == "F") wbstb = 0;
  if (mpsw == "G") wbstb = 2;
  if (mpsw == "H") wbstb = 1;
  if (mpsw == "I") wbstb = 0;
  if (mpsw == "J") wbstb = 2;
  if (mpsw == "K") wbstb = 1;
  if (mpsw == "L") wbstb = 0;
  if (mpsw == "M") wbstb = 2;
  if (mpsw == "N") wbstb = 1;
  if (mpsw == "O") wbstb = 0;
  if (mpsw == "P") wbstb = 2;
  if (mpsw == "Q") wbstb = 1;
  if (mpsw == "R") wbstb = 0;
  if (mpsw == "S") wbstb = 2;
  if (mpsw == "T") wbstb = 1;
  if (mpsw == "U") wbstb = 0;
  if (mpsw == "V") wbstb = 2;
  if (mpsw == "W") wbstb = 1;
  if (mpsw == "X") wbstb = 0;
  if (mpsw == "Y") wbstb = 2;
  if (mpsw == "Z") wbstb = 1;
  if (mpsw == " ") wbstb = 0;
  if (mpsw == ")") wbstb = 2;
  if (mpsw == ",") wbstb = 1;
  if (mpsw == "?") wbstb = 0;
  if (mpsw == "\"") wbstb = 2;
  if (mpsw == "/") wbstb = 1;
  if (mpsw == "+") wbstb = 0;
  if (mpsw == "-") wbstb = 2;
  if (mpsw == "=") wbstb = 1;
  if (mpsw == "^:") wbstb = 0;
  if (mpsw == "!") wbstb = 2;
  if (mpsw == "§") wbstb = 1;


alternatens = Math.floor((Math.random() * 76) + 1);
alternatens1 = Math.floor((Math.random() * 13) + 1);
bstswhl = eval("msatz.charAt(" +myl+")"); 

if (wbstb ==  0) {
   treffer+= bstswhl ;
} else {
   treffer+= change1[alternatens][alternatens1] ;
}

if (wbstb ==  1) {
    treffer+= bstswhl ;
} else {
   treffer+= change1[alternatens][alternatens1] ;
}

if (wbstb ==  2) {
   treffer+= bstswhl ;
} else {
   treffer+= change1[alternatens][alternatens1] ;
}

mpsw = "";
wbstb = "";
bstswhl = "";
alternatens = "";
}
document.changeForm.dialog.value = treffer;
}



Erklärung der ersten Zeilen:

function enc15() {
mpwstz=document.changeForm.pass.value;
if (mpwstz== "")
var mpwstz=document.getElementById("masterpass").innerHTML;

msatz = document.changeForm.dialog.value;
manton=mpwstz;

  while (mpwstz.length < msatz.length) {
  mpwstz+= manton
    }


Die Funtion heßt also enc15() und nach der geschweiften Klammer bis zur letzten geschweiften Klammer ist dieses die Funktion. Ausgelöst wird die Funktion durch einen Button im HTML-Bereich. z. B.: in HTML: <INPUT TYPE="BUTTON" onClick="enc15()" VALUE="Quatschcode"><INPUT TYPE="BUTTON" onClick="dec15()" VALUE="Quatchreturn"></div>

Die Zeile
var mpwstz="satzeinfght";

ist das Passwort, das man ändern kann bzw. sollte: Es gilt: auch bei der Generierung von Quatschcode gilt, je länger, desto besser. Danach wird in
var change1 = new Array();   in einem Array eine Tabelle angelegt. Diese Tabelle braucht man, um die Quatschbuchstaben auszuwählen.

Dabei wird durch eine Zufallszahl der 1,2 oder dritte Quatschbuchstabe generiert oder in Javascript:

alternatens = Math.floor((Math.random() * 76) + 1);
alternatens1 = Math.floor((Math.random() * 13) + 1);
bstswhl = eval("msatz.charAt(" +myl+")"); 

if (wbstb ==  0) {
   treffer+= bstswhl ;
} else {
   treffer+= change1[alternatens][alternatens1] ;
}

if (wbstb ==  1) {
    treffer+= bstswhl ;
} else {
   treffer+= change1[alternatens][alternatens1] ;
}

if (wbstb ==  2) {
   treffer+= bstswhl ;
} else {
   treffer+= change1[alternatens][alternatens1] ;
}



 Dabei werden bei den Ersetzungen zwei Zufallszahlen für das Array Change1 generiert. change1[2][5] entspricht also im zweidimensionalen Array Change1 einer 6. Naja, eigentlich fängt Javascript bei 0 an, die lasse ich aber aus. Den Quatschcode soll man ja schließlich nicht entschlüsseln. Trotzdem sollte dieser Variationsreich sein. Ach ja, verschlüsselt wird hier eigentlich gar nichts, sondern die Buchstaben werden auseinandergerissen und verteilt und wie das geht, kommt jetzt:



  while (mpwstz.length < msatz.length) {
  mpwstz+= manton
    }


In der while-Schleife sorge ich nun dafür, dass der Passwortsatz auf jedenfall länger wird als der Text, den Sie eingeben.

Dazu addiere ich den Passwortsatz mit dem Passwortsatz so lange ( mpwssatz+= manton) , bis der Passwortsatz länger
(mpwstz.length < msatz.length) ist als der zu verschlüsselnde Text.

Deshalb brauche ich auch die Variable Anton, weil Javascript bockig reagiert, wenn man  allein den mpwstz mit sich selbst addiert.

Das muss ich machen, damit ich für jeden Buchstaben des Textes einen Bezugsbuchstaben habe, der die Position im Dreierblock bestimmt.

Die folgende For-Schleife orientiert sich nämlich an der Länge des eingegebenen Textes und nicht des Passwortes (var mpwstz)!

treffer ="";
wbstb = "";
for (myl=0; myl<msatz.length; myl++)
{
  mpsw = eval("mpwstz.charAt(" +myl+")");

   if (mpsw == "") wbstb = 0;
   if (mpsw == "a") wbstb = 1;
   if (mpsw == "b") wbstb = 2;
   if (mpsw == "c") wbstb = 0;


In der For-Schleife kommen zwei neue Variablen vor, die ich als leblose Hülle erst einmal als leer definiere:  Die werden dann in der For-Schleife mit Buchstaben gefüllt....

Die For Schleife zieht sich also Zeichen für Zeichen mit Null beginnend, bis Sie kleiner als die Satzlänge ist (for (myl=0; myl<msatz.length; myl++)) .

Das ist so richtig, weil Javascript mit Null beginnt zu zählen, während msatz.length  Bei eins beginnt zu zählen. Das Wort "das" hat also 3 Buchstaben, bei Null beginnend zu zählen ist 0=d, 1=a und 2=s. Somit sind alle Buchstaben erfasst!

mpsw = eval("mpwstz.charAt(" +myl+")");

Beim Password wird parallel der entsprechende Buchstabe gezogen (myl), welches der Zahl des Buchstabens der For-Schleife entspricht.

Wir haben bei einem Durchlauf also erstmal einen Buchstaben vom Password gezogen, welcher im Folgenden in eine Zahl umgewandelt wird

   if (mpsw == "") wbstb = 0;
   if (mpsw == "a") wbstb = 1;
   if (mpsw == "b") wbstb = 2;
   if (mpsw == "c") wbstb = 0;


Das ist nur ein kleiner Auszug, um den Sinn zu verstehen: Wenn der gezogene Buchstabe gar nichts entspricht, dann ist die Variable wbstb, die außerhalb der For-Schleife zuvor als leere Hülle eingeführt wird eine 0. Das ist der Fallback, wenn der Buchstabe nicht definiert ist.
Ansonsten bei klein a eine 1, bei klein b eine 2 oder bei klein c eine 3. Ich definiere also jede erdenkliche Möglichkeit bis zum Leerzeichen mit einer Zahl, die 0,1 oder 2 entspricht.

Das Hatten wir bereits erklärt:

alternatens = Math.floor((Math.random() * 76) + 1);
alternatens1 = Math.floor((Math.random() * 13) + 1);
bstswhl = eval("msatz.charAt(" +myl+")"); 

if (wbstb ==  0) {
   treffer+= bstswhl ;
} else {
   treffer+= change1[alternatens][alternatens1] ;
}

if (wbstb ==  1) {
    treffer+= bstswhl ;
} else {
   treffer+= change1[alternatens][alternatens1] ;
}

if (wbstb ==  2) {
   treffer+= bstswhl ;
} else {
   treffer+= change1[alternatens][alternatens1] ;
}


alternatens = Math.floor((Math.random() * 76) + 1); ist verständlich eine Zufallszahl von 1-76.

alternatens1 = Math.floor((Math.random() * 13) + 1); ist für die zweite Zahl im Array zuständig.

bstswhl = eval("msatz.charAt(" +myl+")");  Wir definieren innerhalb der Schleife nun den dazugehörigen Buchstaben oder das Zeichen innerhalb der Forschleife unter Verwendung der Variable myl. Die kann natürlich beliebig oft verwendet werden.

if (wbstb ==  0) {
   treffer+= bstswhl ;
} else {
   treffer+= change1[alternatens][1] ;
}



Die if else Konstruktion sagt nichts anderes aus als in schlechten deutsch:

Wenn der Passwortbuchstabe, der  in den vorherigen  Schritten in eine 0 umgewandelt wurde ist, dann ist die Variable Treffer mit dem unverschlüsselten Originalzeichen zu besetzen, sonst bediene dich (else) aus einem mehrdimensionalen Array im Javascript aus der Tabelle change1 und ziehe einen zufälligen Buchstaben [alternatens] aus der ersten Reihe des mehrfachen Array [1] .

Das Array hat 76 Buchstaben (1-76). Es steht dort also Quatschcode oder der Buchstabe aus dem Text. Dieselbe Abfrage wird dreimal hintereinander gemacht: Eben mit 0,1 und 2.

Eine von den drei Abfragen haut also hin, bei Zwei Abfragen jedoch entsteht ein durch Zufall generierter Buchstabe, bei einer Abfrage der eigentlich richtige Treffer, wo dann der richtige Buchstabe steht.

Dadurch wird der Buchstabe bzw. der Text verdreifacht, weil die For-Schleife, in der dieser Prozess abläuft sich immer wiederholt.

So bekommt man bei jedem Durchgang drei Buchstaben mehr in die Variable treffer, abhängig von einem Password und das ist doch tricky?

Die Variable treffer wird am Ende wieder im Dokument ausgegeben, aber wie kriegt man das wieder in korrekten Text zurück?

Ich beschreibe die Funktion kürzer, weil vieles gleich ist und wer bis hierher das nicht verstaden hat, der wird den Rest auch nicht verstehen:

function dec15() {
rpws=document.changeForm.pass.value;
if (rpws== "")
var rpws=document.getElementById("masterpass").innerHTML;
rmstz = document.changeForm.dialog.value;
rrmntn=rpws;
vers=rmstz.length;
ausgleich=rmstz.length-1;
 while (rpws.length < ausgleich) {
 rpws+= rrmntn
  }
rtreffer = "";
rntreffer = "";
rbstb = "";
add = 0;
for (rmyl=0; rmyl<vers; rmyl++)
{
 rmpsw = eval("rpws.charAt(" +rmyl+")");
   if (rmpsw == "") rbstb = 0;
   if (rmpsw == "a") rbstb = 1;
   if (rmpsw == "b") rbstb = 2;
   if (rmpsw == "c") rbstb = 0;
   if (rmpsw == "d") rbstb = 1;
   if (rmpsw == "e") rbstb = 2;
   if (rmpsw == "f") rbstb = 0;
   if (rmpsw == "g") rbstb = 1;
   if (rmpsw == "h") rbstb = 2;
   if (rmpsw == "i") rbstb = 0;
   if (rmpsw == "j") rbstb = 1;
   if (rmpsw == "k") rbstb = 2;
   if (rmpsw == "l") rbstb = 0;
   if (rmpsw == "m") rbstb = 1;
   if (rmpsw == "n") rbstb = 2;
   if (rmpsw == "o") rbstb = 0;
   if (rmpsw == "p") rbstb = 1;
   if (rmpsw == "q") rbstb = 2;
   if (rmpsw == "r") rbstb = 0;
   if (rmpsw == "s") rbstb = 1;
   if (rmpsw == "t") rbstb = 2;
   if (rmpsw == "u") rbstb = 0;
   if (rmpsw == "v") rbstb = 1;
   if (rmpsw == "w") rbstb = 2;
   if (rmpsw == "x") rbstb = 0;
   if (rmpsw == "y") rbstb = 1;
   if (rmpsw == "z") rbstb = 2;
   if (rmpsw == "0") rbstb = 0;
   if (rmpsw == "1") rbstb = 1;
   if (rmpsw == "2") rbstb = 2;
   if (rmpsw == "3") rbstb = 0;
   if (rmpsw == "4") rbstb = 1;
   if (rmpsw == "5") rbstb = 2;
   if (rmpsw == "6") rbstb = 0;
   if (rmpsw == "7") rbstb = 1;
   if (rmpsw == "8") rbstb = 2;
   if (rmpsw == "9") rbstb = 0;
   if (rmpsw == ".") rbstb = 1;
   if (rmpsw == "(") rbstb = 2;
   if (rmpsw == "A") rbstb = 2;
   if (rmpsw == "B") rbstb = 1;
   if (rmpsw == "C") rbstb = 0;
   if (rmpsw == "D") rbstb = 2;
   if (rmpsw == "E") rbstb = 1;
   if (rmpsw == "F") rbstb = 0;
   if (rmpsw == "G") rbstb = 2;
   if (rmpsw == "H") rbstb = 1;
   if (rmpsw == "I") rbstb = 0;
   if (rmpsw == "J") rbstb = 2;
  if (rmpsw == "K") rbstb = 1;
   if (rmpsw == "L") rbstb = 0;
   if (rmpsw == "M") rbstb = 2;
   if (rmpsw == "N") rbstb = 1;
   if (rmpsw == "O") rbstb = 0;
   if (rmpsw == "P") rbstb = 2;
   if (rmpsw == "Q") rbstb = 1;
   if (rmpsw == "R") rbstb = 0;
   if (rmpsw == "S") rbstb = 2;
  if (rmpsw == "T") rbstb = 1;
   if (rmpsw == "U") rbstb = 0;
   if (rmpsw == "V") rbstb = 2;
   if (rmpsw == "W") rbstb = 1;
   if (rmpsw == "X") rbstb = 0;
   if (rmpsw == "Y") rbstb = 2;
   if (rmpsw == "Z") rbstb = 1;
   if (rmpsw == " ") rbstb = 0;
   if (rmpsw == ")") rbstb = 2;
   if (rmpsw == ",") rbstb = 1;
   if (rmpsw == "?") rbstb = 0;
   if (rmpsw == "\"") rbstb = 2;
   if (rmpsw == "/") rbstb = 1;
   if (rmpsw == "+") rbstb = 0;
   if (rmpsw == "-") rbstb = 2;
   if (rmpsw == "=") rbstb = 1;
   if (rmpsw == "^:") rbstb = 0;
   if (rmpsw == "!") rbstb = 2;
   if (rmpsw == "§") rbstb = 1;
 alter = add;
rtreffer = alter + rbstb;
rbstswhl = eval("rmstz.charAt(" +rtreffer+")");
if (1 != 5) rntreffer+= rbstswhl;
 rmpsw = "";
 rtreffer = "";
 rbstswhl = "";
 alter = "";
 rbstb = "";
 add = add + 3;
  }
 document.changeForm.dialog.value = rntreffer;
 }


Jetzt wir es richtig schwer: Die Funktion wird mit dem Button im HTML-Dokument gestartet und die Variablen wieder gesetzt.
Die Variablen-Namen dürfen sich nicht mit den Namen der Variablen in anderen Funktionen überschneiden - daran scheitern viele Profis, die nach irgendwelchen Nomenklaturen arbeiten. Deshalb verwende ich auch mehrere Buchstaben in for-Schleifen, bei großen Projekten hilfreich, wenn alle einstelligen oder zweistelligen Variablen-Namen vergeben werden.

Außerdem brauchen wir einen total anderen Denkansatz: In jedem Dreierblock ist also ein Buchstabe, den wir auswählen müssen.

Deshalb schaffe ich eine variable Namens add, die vor der Vorschleife mit 0 definiert wird. Am Ende eines Durchgangs mit der Schleife wird diese mit drei addiert.

Auf diese Art und Weise gehe ich dann auch immer einen Dreierblock im eingebetteten Text durch: Im ersten Durchlauf will ich also 0,1,2 auswählen und weis von der Verschlüsselung her, das dort ein Treffer besteht: Entweder an der Stelle 0,1,2 im Ersten Durchgang.

Also Frage ich wieder den Wert des ersten Buchstabens des Passwortes ab und erhalte eine 0,1 oder 2. ( rbstb)

Diese Zahl addiere ich mit add bzw. alter, die gleich add ist, aber nochmals definiert werden muss - tut mir leid geht nicht anders..

Im ersten Durchlauf ist add also eine 0 und die wird mit 0, 1 oder 2 addiert (rtreffer = alter + rbstb;).

Danach der Treffer als Buchstabe aus dem Text gezogen (rbstswhl = eval("rmstz.charAt(" +rtreffer+")"); ).

if (1 != 5) rntreffer+= rbstswhl; hört sich unsinnig an, aber um eine Addition von Text zu erreichen brauche ich zwingend eine if-Konstruktion und 1 wird immer ungleich fünf sein -:)

Mein Ziel wurde erreicht, ich habe in diesem Dreierblock die Stelle ermittelt, wo der Buchstabe steht, wo kein Quatschcode steht.

In der letzten Zeile wird add unabhängig um drei erhöht (die Buchstaben 3,4,5 werden bearbeitet) und dasselbe Spiel beginnt:
Der Buchstabe vom Passworttext wird gezogen und in die entsprechende Zahl 0,1,2 umgewandelt.

Diese Zahl wird nun mit drei addiert, welches als Ergebnis eben 3,4 oder 5 ist - ein anderes Ergebnis ist nicht möglich. Diese Zahl wird wieder in einen Buchstaben umgewandelt und der Buchstabe in der Variable rntreffer aufgenommen....

Das letzte Problem ist die Länge des zu bearbeitenden Textes, den könnte man über ein Drittel  der Länge des ursprünglichen Textes regeln, aber ich lasse die  For Schleife eben durchlaufen und bei (rbstswhl = eval("rmstz.charAt(" +rtreffer+")"); ) gibt es dann im wahrsten Sinne keine Treffer mehr am Ende. Demzufolge wird automatisch nichts mehr buchstabenmäßig addiert, dass läuft ins Lehrer ohne Fehlermeldung.

Fazit

Die Einbettung von Tet in Quarkcode ist eine anspruchsvolle Programmierung und ich löste das mit einem mehrdimensionalen Array und einer Zufallszahl zur Generierung des Quatsch-Codes.

Die Vetreilung der Buchstaben löste ich in Dreierblöcken, die durch eine if else-Abfrage mit umgewandelten Zahlen aus einem Passwortsatz den Platz des Originaltextes bestimmen.

Dadurch kommt es zu einer unterschiedlichen Verteilung der Positionen in den Dreierblöcken.

Umgekehrt wird beim Dekodieren  ein Dreierblock  geschaffen, in dem durch die umgewandelte Zahl aus dem Passwortsatz und einer simplen Addition die Position des Buchstabens wieder bestimmt.

Der Quatschcode wird dabei ignoriert, genau wie das Array, aus dem der Quatschcode kam.

Drückt man den Kodierungsbutton zweimal, dann sind wir bei 9 Buchstaben angtelangt, von dem 1 Buchstabe vom Originaltext stammt (Zum Dekodieren zweimal den Returnbutton drücken).

Aus einer Seite Text wurden im o. a. Beispiel 9 Seiten: Javascript schafft das locker. Wird dann dazwischen noch mit irgendeiner anderen Funktion kodiert, dann ist das schon ein wenig schwerer knackbar -

So ist diese Funktion eine Killerfunktion, da der potentielle Angreifer nicht über die Position der Buchstaben genau bescheid weiß.


Vielleicht zum Abschluss noch einmal den Code mit einer abgewandelten Caesarverschlüsselung:


<html>
  <head>
 <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
    <title>Codierung und Decodierung mitNoNSA</title>
    <meta name="author" content="Sternenhimmelstuermer">
    <meta name="description" content="NoNSA Codieren Decodieren">
    <SCRIPT LANGUAGE="JavaScript"><!--
function enc13() {


pwssatz=document.changeForm.pass.value;
satz = document.changeForm.dialog.value;
anton=pwssatz;

  while (pwssatz.length < satz.length) {
  pwssatz+= anton
    }

neuersatz = "";
versatz = "";

for (ilx=0; ilx<satz.length; ilx++)
{
  passw = eval("pwssatz.charAt(" +ilx+")");

  if (versatz == "") versatz = 39;
  if (passw == "a") versatz = 1;
  if (passw == "b") versatz = 2;
  if (passw == "c") versatz = 3;
  if (passw == "d") versatz = 4;
  if (passw == "e") versatz = 5;
  if (passw == "f") versatz = 6;
  if (passw == "g") versatz = 7;
  if (passw == "h") versatz = 8;
  if (passw == "i") versatz = 9;
  if (passw == "j") versatz = 10;
  if (passw == "k") versatz = 11;
  if (passw == "l") versatz = 12;
  if (passw == "m") versatz = 13;
  if (passw == "n") versatz = 14;
  if (passw == "o") versatz = 15;
  if (passw == "p") versatz = 16;
  if (passw == "q") versatz = 17;
  if (passw == "r") versatz = 18;
  if (passw == "s") versatz = 19;
  if (passw == "t") versatz = 20;
  if (passw == "u") versatz = 21;
  if (passw == "v") versatz = 22;
  if (passw == "w") versatz = 23;
  if (passw == "x") versatz = 24;
  if (passw == "y") versatz = 25;
  if (passw == "z") versatz = 26;
  if (passw == "0") versatz = 27;
  if (passw == "1") versatz = 28;
  if (passw == "2") versatz = 29;
  if (passw == "3") versatz = 30;
  if (passw == "4") versatz = 31;
  if (passw == "5") versatz = 32;
  if (passw == "6") versatz = 33;
  if (passw == "7") versatz = 34;
  if (passw == "8") versatz = 35;
  if (passw == "9") versatz = 36;
  if (passw == ".") versatz = 37;
  if (passw == "(") versatz = 38;

  if (passw == "A") versatz = -1;
  if (passw == "B") versatz = -2;
  if (passw == "C") versatz = -3;
  if (passw == "D") versatz = -4;
  if (passw == "E") versatz = -5;
  if (passw == "F") versatz = -6;
  if (passw == "G") versatz = -7;
  if (passw == "H") versatz = -8;
  if (passw == "I") versatz = -9;
  if (passw == "J") versatz = -10;
  if (passw == "K") versatz = -11;
  if (passw == "L") versatz = -12;
  if (passw == "M") versatz = -13;
  if (passw == "N") versatz = -14;
  if (passw == "O") versatz = -15;
  if (passw == "P") versatz = -16;
  if (passw == "Q") versatz = -17;
  if (passw == "R") versatz = -18;
  if (passw == "S") versatz = -19;
  if (passw == "T") versatz = -20;
  if (passw == "U") versatz = -21;
  if (passw == "V") versatz = -22;
  if (passw == "W") versatz = -23;
  if (passw == "X") versatz = -24;
  if (passw == "Y") versatz = -25;
  if (passw == "Z") versatz = -26;
  if (passw == " ") versatz = -27;
  if (passw == ")") versatz = -28;
  if (passw == ",") versatz = -29;
  if (passw == "?") versatz = -30;
  if (passw == "\"") versatz = -31;
  if (passw == "/") versatz = -32;
  if (passw == "+") versatz = -33;
  if (passw == "-") versatz = -34;
  if (passw == "=") versatz = -35;
  if (passw == "^:") versatz = -36;
  if (passw == "!") versatz = -37;
  if (passw == "§") versatz = -38;

  nr = satz.charCodeAt(ilx);
  if (31<nr && nr<123)
    {
    nnr = nr + versatz;
    versatz = "";
    if (nnr>122) nnr = 31 + (nnr-122);
    if (nnr<32)  nnr =  122 - (31 - nnr);
    neuersatz += String.fromCharCode(nnr);
    }
  else neuersatz += satz[ilx];
 }
document.changeForm.dialog.value = neuersatz;
}


function dec13()
{
spwssatz=document.changeForm.pass.value;
spatz = document.changeForm.dialog.value;
kanton=spwssatz;
  while (spwssatz.length < spatz.length) {
  spwssatz+= kanton
 }

neuerspatz = "";
verspatz = "";
for (pilx=0; pilx<spatz.length; pilx++)
  {
  spassw = eval("spwssatz.charAt(" +pilx+")");
  if (verspatz == "") verspatz = -39;
  if (spassw == "a") verspatz = -1;
  if (spassw == "b") verspatz = -2;
  if (spassw == "c") verspatz = -3;
  if (spassw == "d") verspatz = -4;
  if (spassw == "e") verspatz = -5;
  if (spassw == "f") verspatz = -6;
  if (spassw == "g") verspatz = -7;
  if (spassw == "h") verspatz = -8;
  if (spassw == "i") verspatz = -9;
  if (spassw == "j") verspatz = -10;
  if (spassw == "k") verspatz = -11;
  if (spassw == "l") verspatz = -12;
  if (spassw == "m") verspatz = -13;
  if (spassw == "n") verspatz = -14;
  if (spassw == "o") verspatz = -15;
  if (spassw == "p") verspatz = -16;
  if (spassw == "q") verspatz = -17;
  if (spassw == "r") verspatz = -18;
  if (spassw == "s") verspatz = -19;
  if (spassw == "t") verspatz = -20;
  if (spassw == "u") verspatz = -21;
  if (spassw == "v") verspatz = -22;
  if (spassw == "w") verspatz = -23;
  if (spassw == "x") verspatz = -24;
  if (spassw == "y") verspatz = -25;
  if (spassw == "z") verspatz = -26;
  if (spassw == "0") verspatz = -27;
  if (spassw == "1") verspatz = -28;
  if (spassw == "2") verspatz = -29;
  if (spassw == "3") verspatz = -30;
  if (spassw == "4") verspatz = -31;
  if (spassw == "5") verspatz = -32;
  if (spassw == "6") verspatz = -33;
  if (spassw == "7") verspatz = -34;
  if (spassw == "8") verspatz = -35;
  if (spassw == "9") verspatz = -36;
  if (spassw == ".") verspatz = -37;
  if (spassw == "(") verspatz = -38;

  if (spassw == "A") verspatz = 1;
  if (spassw == "B") verspatz = 2;
  if (spassw == "C") verspatz = 3;
  if (spassw == "D") verspatz = 4;
  if (spassw == "E") verspatz = 5;
  if (spassw == "F") verspatz = 6;
  if (spassw == "G") verspatz = 7;
  if (spassw == "H") verspatz = 8;
  if (spassw == "I") verspatz = 9;
  if (spassw == "J") verspatz = 10;
  if (spassw == "K") verspatz = 11;
  if (spassw == "L") verspatz = 12;
  if (spassw == "M") verspatz = 13;
  if (spassw == "N") verspatz = 14;
  if (spassw == "O") verspatz = 15;
  if (spassw == "P") verspatz = 16;
  if (spassw == "Q") verspatz = 17;
  if (spassw == "R") verspatz = 18;
  if (spassw == "S") verspatz = 19;
  if (spassw == "T") verspatz = 20;
  if (spassw == "U") verspatz = 21;
  if (spassw == "V") verspatz = 22;
  if (spassw == "W") verspatz = 23;
  if (spassw == "X") verspatz = 24;
  if (spassw == "Y") verspatz = 25;
  if (spassw == "Z") verspatz = 26;
  if (spassw == " ") verspatz = 27;
  if (spassw == ")") verspatz = 28;
  if (spassw == ",") verspatz = 29;
  if (spassw == "?") verspatz = 30;
  if (spassw == "\"") verspatz = 31;
  if (spassw == "/") verspatz = 32;
  if (spassw == "+") verspatz = 33;
  if (spassw == "-") verspatz = 34;
  if (spassw == "=") verspatz = 35;
  if (spassw == "^:") verspatz = 36;
  if (spassw == "!") verspatz = 37;
  if (spassw == "§") verspatz = 38;

  wnr = spatz.charCodeAt(pilx);

  if (31<wnr && wnr<123)
    {
    wnnr = wnr + verspatz;
    verspatz = "";
    if (wnnr>122) wnnr = 31 + (wnnr-122);
    if (wnnr<32)  wnnr =  122 - (31 - wnnr);
    neuerspatz += String.fromCharCode(wnnr);
    }
  else neuerspatz += spatz[pilx];
  }
document.changeForm.dialog.value = neuerspatz;
}

function enc15() {
var mpwstz="satzeinfght";

var change1 = new Array();
change1[0] = new Array("Tab0","Tab1","Tab2","Tab3","Tab4","Tab5","Tab6","Tab7","Tab8","Tab9","Tab10","Tab11","Tab12","Tab13");
change1[1] = new Array("8","p","J","o","d"," ","L","+"," ","q","x","l","J",":");
change1[2] = new Array("?","q","Z","V","n","6","z",".","f","B","8","t","L","E");
change1[3] = new Array("1","0","u","e","x","Y","S","5","y","s","u","w","T","g");
change1[4] = new Array("D","o","x","3","2","e","c","l","i","o","§"," ","P","y");
change1[5] = new Array("I","P","I","R","+","z","=","0","n","f","P","h","?","m");
change1[6] = new Array("W","(","M","§","k","p","k","s","0","v","S","Y","h","§");
change1[7] = new Array("w","\"","s","c","o","q","d","w","L","z","s","Q","d","L");
change1[8] = new Array("y","F","0","z","-","U","j","/","G","?","E","s","j","8");
change1[9] = new Array("(","w","5","6","S","4","q","U","d","L","W","z","I","9");
change1[10] = new Array(" ",":","A","T",")","H","(","(","s","C","R","N","U","R");
change1[11] = new Array("V","f","4","S","§",",","4","?","B","p","T","B","y","e");
change1[12] = new Array("d","x","1","\"","j","t","D","o","7","h","D",".","-","(");
change1[13] = new Array("n","t","d","1","U","y","G","y","N","E","f","e","(","s");
change1[14] = new Array("A",".",",","P","a","1","W","x","\"","4","2","\"","M","2");
change1[15] = new Array("3","Y","m","0","O","2","!","4","m","k","t",":","=","b");
change1[16] = new Array("4","8","y","u","z","\"","/","j",".","\""," ","p"," ","?");
change1[17] = new Array("\"","u","R"," ","b","!","E","Y","p","S","j","=","r","A");
change1[18] = new Array("E","D","3","Y","B","A","3","E","c","5","h","i",":","q");
change1[19] = new Array(")","C","§","t","0","9","2","J",",","1",",","a","p","I");
change1[20] = new Array("7","U","f","=","3","X","l","!","b","9","B","2","!","u");
change1[21] = new Array("z","?","k","p","5","w","T","3","o","D","i","3","m","!");
change1[22] = new Array("e","g","-","-","f","K","O","q","2","6","U","V","u","X");
change1[23] = new Array(".","X","=","a","F","x","N","=",":","V","M","8","A","Y");
change1[24] = new Array("!","T","v","2",":","k","m","K","t","T","Y","o","R","P");
change1[25] = new Array("6","A","H","v","c","j","1","n","C","m","c",",","E","o");
change1[26] = new Array(",","B","+","U","V","m","A",")","P",",","a","m","V","=");
change1[27] = new Array("g","i","o","!","r","R","M","P","3","a",":","c","f","/");
change1[28] = new Array(":","6","6","s",",","+","o",",","/","3","H","v","D","c");
change1[29] = new Array("N","R","q","A","l","O","a","F","K","g","0","A","+","H");
change1[30] = new Array("k","G","w","m","A","N","5","u","a","M","w","!",")","z");
change1[31] = new Array("u","s",")","n","i","C","6","D","§","r","b","d","4","V");
change1[32] = new Array("a","-","t","?","?","(","I","R","1","2","F","I","b","l");
change1[33] = new Array("b",",","l","E","u","=","e","S","6","n","p","j","o","G");
change1[34] = new Array("/","a","g","M","Q","v"," ","B","W","d","k","(","e","U");
change1[35] = new Array("C","e","B",".","Y","u","p",":","r","O","X","+","k","x");
change1[36] = new Array("§","I","!","l","R","5","s","v","I"," ","9","k","\"","J");
change1[37] = new Array("P","7","O","5","q","o","R","e","-","i","(","L","8","i");
change1[38] = new Array("+","l","2","O","(","F","w","G","9","c","q","W","G","w");
change1[39] = new Array("s","!","T",":","W","S","+","\"","l","Y","3","r","1","1");
change1[40] = new Array("R","5","n","C","C","-","Y","A","Z","P","C","Z","c","C");
change1[41] = new Array("H","V","N","g","K","d","U","i","v","Z","r","D","F","N");
change1[42] = new Array("p","N",".","h","m",".","H","9","X","W","!","O","N","n");
change1[43] = new Array("Q"," ","D","k","!","8","0","§","O","X","o",")","W","O");
change1[44] = new Array("x","4","(","G","J","Z","Q","C","M","t","+","X","9","Q");
change1[45] = new Array("F","E","Q",",","v","L","B","7","(","F","e","K","s","-");
change1[46] = new Array("B","h","h","4","T","T","8","1","w",":","y","4","a",".");
change1[47] = new Array("m","W","V","/","h","W",")","p","R",".","4","n","§",")");
change1[48] = new Array("j","j","?","y","7","§","P","h","J","J","5","g","g","Z");
change1[49] = new Array("9","b","b","Q","t","7","u","W","?","b","Q","R","q",",");
change1[50] = new Array("h","K","X","j","6","B","Z","a","e","w","g","S","6","7");
change1[51] = new Array("L","O","e","B","Z","P","h","H","U","Q","6","f","t","W");
change1[52] = new Array("t","y","i","I","p","0","7","M","5","8","n","b","K","0");
change1[53] = new Array("l","+","G","Z","P","n","V","V","Q","e","-","C","Q","+");
change1[54] = new Array("0","H"," ","X","w","i","F","r","F","-","v","H","w","h");
change1[55] = new Array("O","z","j","b","y","b","t","k","A","I","1","6","H","r");
change1[56] = new Array("-","v","c","F",".","h","?","2","u","G","O","G","2","S");
change1[57] = new Array("Z","3","F","x","L","?","r","m","q","H","J","?","5","D");
change1[58] = new Array("Y","m","r","9","N","/","9","t","S","R","?","u","/","j");
change1[59] = new Array("2","L","7","J"," ","3","n","6","!","!","G","x","S","v");
change1[60] = new Array("J","=","S","+","\"","r",":","d","k","y","\"","9",",","t");
change1[61] = new Array("i","/",":","K","M","g",".","O","Y","§","A","E","7","p");
change1[62] = new Array("X","M","p","D","I",")","v","N","z",")","L","q",".","F");
change1[63] = new Array("G","r","9","w","s","f","\"","L",")","(","K","P","Z","a");
change1[64] = new Array("v","Q","E","8","X","D","i","8","h","7","d","F","v"," ");
change1[65] = new Array("K","1","L","r","g","J","y"," ","H","K","V","T","X","5");
change1[66] = new Array("=","k","/","f","4","s","K","X","8","l",".","M","O","3");
change1[67] = new Array("5","9","\"","i","8","l",",","Q","4","A","N","J","x","d");
change1[68] = new Array("q","Z","P","(","=","Q","x","I","D","=","I","1","B","B");
change1[69] = new Array("f","J","a","q","G","M","C","f","+","0","Z","/","Y","k");
change1[70] = new Array("S","c","8","L","9","G","b","b","T","N","z","U","3","f");
change1[71] = new Array("M","d","K","7","e",":","§","-","x","x","7","0","l","T");
change1[72] = new Array("U",")","z","N","E","c","J","z","V","j","/","y","0","M");
change1[73] = new Array("r","S","C","H","D","V","g","g","g","u","=","5","z","6");
change1[74] = new Array("T","2","Y","d","H","I","f","Z","=","/",")","7","C","K");
change1[75] = new Array("c","§","U","W","1","E","X","T","E","U","l","§","i","\"");
change1[76] = new Array("o","n","W",")","/","a","-","c","j","+","m","-","n","4");



msatz = document.changeForm.dialog.value;
manton=mpwstz;

  while (mpwstz.length < msatz.length) {
  mpwstz+= manton
    }

treffer ="";
wbstb = "";
for (myl=0; myl<msatz.length; myl++)
{
  mpsw = eval("mpwstz.charAt(" +myl+")");

   if (mpsw == "") wbstb = 0;
   if (mpsw == "a") wbstb = 1;
   if (mpsw == "b") wbstb = 2;
   if (mpsw == "c") wbstb = 0;
   if (mpsw == "d") wbstb = 1;
   if (mpsw == "e") wbstb = 2;
   if (mpsw == "f") wbstb = 0;
   if (mpsw == "g") wbstb = 1;
   if (mpsw == "h") wbstb = 2;
   if (mpsw == "i") wbstb = 0;
   if (mpsw == "j") wbstb = 1;
   if (mpsw == "k") wbstb = 2;
   if (mpsw == "l") wbstb = 0;
   if (mpsw == "m") wbstb = 1;
   if (mpsw == "n") wbstb = 2;
   if (mpsw == "o") wbstb = 0;
   if (mpsw == "p") wbstb = 1;
   if (mpsw == "q") wbstb = 2;
  if (mpsw == "r") wbstb = 0;
  if (mpsw == "s") wbstb = 1;
  if (mpsw == "t") wbstb = 2;
  if (mpsw == "u") wbstb = 0;
  if (mpsw == "v") wbstb = 1;
  if (mpsw == "w") wbstb = 2;
  if (mpsw == "x") wbstb = 0;
  if (mpsw == "y") wbstb = 1;
  if (mpsw == "z") wbstb = 2;
  if (mpsw == "0") wbstb = 0;
  if (mpsw == "1") wbstb = 1;
  if (mpsw == "2") wbstb = 2;
  if (mpsw == "3") wbstb = 0;
  if (mpsw == "4") wbstb = 1;
  if (mpsw == "5") wbstb = 2;
  if (mpsw == "6") wbstb = 0;
  if (mpsw == "7") wbstb = 1;
  if (mpsw == "8") wbstb = 2;
  if (mpsw == "9") wbstb = 0;
  if (mpsw == ".") wbstb = 1;
  if (mpsw == "(") wbstb = 2;
  if (mpsw == "A") wbstb = 2;
  if (mpsw == "B") wbstb = 1;
  if (mpsw == "C") wbstb = 0;
  if (mpsw == "D") wbstb = 2;
  if (mpsw == "E") wbstb = 1;
  if (mpsw == "F") wbstb = 0;
  if (mpsw == "G") wbstb = 2;
  if (mpsw == "H") wbstb = 1;
  if (mpsw == "I") wbstb = 0;
  if (mpsw == "J") wbstb = 2;
  if (mpsw == "K") wbstb = 1;
  if (mpsw == "L") wbstb = 0;
  if (mpsw == "M") wbstb = 2;
  if (mpsw == "N") wbstb = 1;
  if (mpsw == "O") wbstb = 0;
  if (mpsw == "P") wbstb = 2;
  if (mpsw == "Q") wbstb = 1;
  if (mpsw == "R") wbstb = 0;
  if (mpsw == "S") wbstb = 2;
  if (mpsw == "T") wbstb = 1;
  if (mpsw == "U") wbstb = 0;
  if (mpsw == "V") wbstb = 2;
  if (mpsw == "W") wbstb = 1;
  if (mpsw == "X") wbstb = 0;
  if (mpsw == "Y") wbstb = 2;
  if (mpsw == "Z") wbstb = 1;
  if (mpsw == " ") wbstb = 0;
  if (mpsw == ")") wbstb = 2;
  if (mpsw == ",") wbstb = 1;
  if (mpsw == "?") wbstb = 0;
  if (mpsw == "\"") wbstb = 2;
  if (mpsw == "/") wbstb = 1;
  if (mpsw == "+") wbstb = 0;
  if (mpsw == "-") wbstb = 2;
  if (mpsw == "=") wbstb = 1;
  if (mpsw == "^:") wbstb = 0;
  if (mpsw == "!") wbstb = 2;
  if (mpsw == "§") wbstb = 1;


alternatens = Math.floor((Math.random() * 76) + 1);
alternatens1 = Math.floor((Math.random() * 13) + 1);
bstswhl = eval("msatz.charAt(" +myl+")"); 

if (wbstb ==  0) {
   treffer+= bstswhl ;
} else {
   treffer+= change1[alternatens][alternatens1] ;
}

if (wbstb ==  1) {
    treffer+= bstswhl ;
} else {
   treffer+= change1[alternatens][alternatens1] ;
}

if (wbstb ==  2) {
   treffer+= bstswhl ;
} else {
   treffer+= change1[alternatens][alternatens1] ;
}

mpsw = "";
wbstb = "";
bstswhl = "";
alternatens = "";
}
document.changeForm.dialog.value = treffer;
}


function dec15() {
var rpws="satzeinfght";
rmstz = document.changeForm.dialog.value;
rrmntn=rpws;
vers=rmstz.length;
ausgleich=rmstz.length-1;
 while (rpws.length < ausgleich) {
 rpws+= rrmntn
  }
rtreffer = "";
rntreffer = "";
rbstb = "";
add = 0;
for (rmyl=0; rmyl<vers; rmyl++)
{
 rmpsw = eval("rpws.charAt(" +rmyl+")");
   if (rmpsw == "") rbstb = 0;
   if (rmpsw == "a") rbstb = 1;
   if (rmpsw == "b") rbstb = 2;
   if (rmpsw == "c") rbstb = 0;
   if (rmpsw == "d") rbstb = 1;
   if (rmpsw == "e") rbstb = 2;
   if (rmpsw == "f") rbstb = 0;
   if (rmpsw == "g") rbstb = 1;
   if (rmpsw == "h") rbstb = 2;
   if (rmpsw == "i") rbstb = 0;
   if (rmpsw == "j") rbstb = 1;
   if (rmpsw == "k") rbstb = 2;
   if (rmpsw == "l") rbstb = 0;
   if (rmpsw == "m") rbstb = 1;
   if (rmpsw == "n") rbstb = 2;
   if (rmpsw == "o") rbstb = 0;
   if (rmpsw == "p") rbstb = 1;
   if (rmpsw == "q") rbstb = 2;
   if (rmpsw == "r") rbstb = 0;
   if (rmpsw == "s") rbstb = 1;
   if (rmpsw == "t") rbstb = 2;
   if (rmpsw == "u") rbstb = 0;
   if (rmpsw == "v") rbstb = 1;
   if (rmpsw == "w") rbstb = 2;
   if (rmpsw == "x") rbstb = 0;
   if (rmpsw == "y") rbstb = 1;
   if (rmpsw == "z") rbstb = 2;
   if (rmpsw == "0") rbstb = 0;
   if (rmpsw == "1") rbstb = 1;
   if (rmpsw == "2") rbstb = 2;
   if (rmpsw == "3") rbstb = 0;
   if (rmpsw == "4") rbstb = 1;
   if (rmpsw == "5") rbstb = 2;
   if (rmpsw == "6") rbstb = 0;
   if (rmpsw == "7") rbstb = 1;
   if (rmpsw == "8") rbstb = 2;
   if (rmpsw == "9") rbstb = 0;
   if (rmpsw == ".") rbstb = 1;
   if (rmpsw == "(") rbstb = 2;
   if (rmpsw == "A") rbstb = 2;
   if (rmpsw == "B") rbstb = 1;
   if (rmpsw == "C") rbstb = 0;
   if (rmpsw == "D") rbstb = 2;
   if (rmpsw == "E") rbstb = 1;
   if (rmpsw == "F") rbstb = 0;
   if (rmpsw == "G") rbstb = 2;
   if (rmpsw == "H") rbstb = 1;
   if (rmpsw == "I") rbstb = 0;
   if (rmpsw == "J") rbstb = 2;
  if (rmpsw == "K") rbstb = 1;
   if (rmpsw == "L") rbstb = 0;
   if (rmpsw == "M") rbstb = 2;
   if (rmpsw == "N") rbstb = 1;
   if (rmpsw == "O") rbstb = 0;
   if (rmpsw == "P") rbstb = 2;
   if (rmpsw == "Q") rbstb = 1;
   if (rmpsw == "R") rbstb = 0;
   if (rmpsw == "S") rbstb = 2;
  if (rmpsw == "T") rbstb = 1;
   if (rmpsw == "U") rbstb = 0;
   if (rmpsw == "V") rbstb = 2;
   if (rmpsw == "W") rbstb = 1;
   if (rmpsw == "X") rbstb = 0;
   if (rmpsw == "Y") rbstb = 2;
   if (rmpsw == "Z") rbstb = 1;
   if (rmpsw == " ") rbstb = 0;
   if (rmpsw == ")") rbstb = 2;
   if (rmpsw == ",") rbstb = 1;
   if (rmpsw == "?") rbstb = 0;
   if (rmpsw == "\"") rbstb = 2;
   if (rmpsw == "/") rbstb = 1;
   if (rmpsw == "+") rbstb = 0;
   if (rmpsw == "-") rbstb = 2;
   if (rmpsw == "=") rbstb = 1;
   if (rmpsw == "^:") rbstb = 0;
   if (rmpsw == "!") rbstb = 2;
   if (rmpsw == "§") rbstb = 1;
 alter = add;
rtreffer = alter + rbstb;
rbstswhl = eval("rmstz.charAt(" +rtreffer+")");
if (1 != 5) rntreffer+= rbstswhl;
 rmpsw = "";
 rtreffer = "";
 rbstswhl = "";
 alter = "";
 rbstb = "";
 add = add + 3;
  }
 document.changeForm.dialog.value = rntreffer;
 }


</script>

  </head>
   <body>
  <center>
 <FORM NAME="changeForm">
 <div><h1>Verschlüsselung mit NONSA</h1><div>
<br>
<br>
<div><b>Codierung oder Encodierung mit Caesar</b></div>
<br>
<div>Geben Sie hier ein möglichst Password oder ganze Textseiten ein, je mehr, desto sicherer...</div>
<br>
<div><textarea id=pass rows="5" cols="35"></textarea></div>
<br>
<div>Geben Sie hier den Text ein</div>
<br>
<div><textarea id=dialog rows="10" cols="35"></textarea></div>
<br>
<div>
<INPUT TYPE="BUTTON" onClick="enc13()" VALUE="1-click-encode">
<INPUT TYPE="BUTTON" onClick="dec13()" VALUE="1-click-decode"></div>
<div></div>
<br>
<br>
<INPUT TYPE="BUTTON" onClick="enc15()" VALUE="Quatschcode"><INPUT TYPE="BUTTON" onClick="dec15()" VALUE="Quatchreturn"></div>
<br>
<br>
<br></div>
<br>
</FORM></center>
</body>
</html>


















Impressum
Datenschutz