2. Schnelle Textverschluesselung aus der alten Zeit...

Inhaltsangabe
Einleitung
Demo
Download
Codeerklärung
Fazit



Einleitung

Der Autor dieser Webseite entwickelt atypische Entwicklungsstrategien, die nicht auf schwulstige Algorithmen basieren, sondern auf einfach für den User nachverfolgbare Technologien aus der alten Zeit, nur so angepasst, dass Sie selbst heutigen Standards genügen.

Sie können sich den Code herunterladen und die Textverschlüsselung Offline verwenden - auf dem PC, egal mit welchem Betriebssystem: Jeder Browser kann die Verschlüsselung vornehmen.

Die Textlänge ist egal: Ganze Bücher können verwendet werden.

Wie funktioniert die Verschlüsselung und warum behaupte ich, dass sie unknackbar ist?

Das Verschlüsselungsprinzip ist eine Abwandlung des Rotationsprinzips von Buchstaben, wie es im sogenannten rot 13-Verfahren von Cäsar verwendet wurde. Ja, dieses ist aus heutiger Sicht sehr leicht knackbar, weil dort lediglich die Buchstaben permanent um 13 Positionen im Alphabet verschoben werden.

Deshalb erweiterte der Autor den Ansatz ein wenig mit einem Ansatz aus der Kabbala bzw. der Numerologie:

Jeder Buchstabe und jedes Zeichen hat im Unicode bzw. UTF 8 eine Nummer: Der Buchstabe oder ein Zeichen wird also zu einer Zahl.

Diese Zahl addiere oder subtrahiere ich mit einer Zahl von 1-39 bzw. -1 - -39. Passen sie nun genau auf:

Diese Zahl wird per Zuweisung aus den Buchstaben bzw. Zeichen des Passwortes bzw. besser gesagt der Passwortsätze generiert.

Ein Beispiel: Beim Passwort und beim zu verschlüsselnden Text geben Sie ein kleines a ein:

Ein kleines a beim zu verschlüsselnden Text hat die UTF-8 - Nummer: 97
Bei einem kleinen a bestimmte ich beim Passwort eine Verschiebung um einen Buchstaben, also +1

Bei 97+1 kommt 98 heraus, welches einem kleinen b entspricht. Bei Drücken des Buttons kodieren haben Sie nun ein kleines b dort stehen.

Hört sich erstmal nicht ganz so genial an, aber der potentielle Hacker sieht später an dieser Stelle weder den unbekannten Buchstaben des Passwortes, noch den des zu verschlüsselnden Textes.

Das Passwort ist auch mir nicht bekannt: Das können Ganze Din A4 Seiten mit unsinnigen Text sein: Leerzeichen,  Paragrafenzeichen, Plus...

Der erste Buchstabe des  zu verschlüsselnden Textes und des Passwortes ergibt den zu verschlüsselnden Text, der zweite Buchstabe des zu verschlüsselnden Textes und zweite Buchstabe des Passwortsatzes ist wiederum ein Paar:

Geben Sie ein "aa" als zu verschlüsselnden Text ein und ein ab als Passwort kommt also z. B.  ein bc heraus, weil 97+2 eben das ganze zu einem c als zweiten Buchstaben macht.

Ist das Passwort kürzer als der Text, dann wird das Passwort wieder vom Anfang durchlaufen: Sie können nichts verkehrt machen! Passwortsatz und zu verschlüsselnder Text sollten gleich lang sein...

Numerologisch gesehen löse ich also Buchstaben des zu verschlüsselnden Textes in Zahlen des UTF-8 Codes auf und addiere oder subtrahiere nach dem Cäsar-Verfahren einen vom Passwort erstellten Wert nach meiner eigenen Vorstellung einen neuen Wert von -1 bis 39.

Ich hätte jetzt auch die Werte des Abzugs oder der Addition des Passwortes auch gestreng der Regeln der Kabbala verwenden können-:)

Dann wäre das eine rein mystische Verschlüsselung mit angewandter Numerologie der Kabbala - durchaus möglich, Esoteriker können die Werte gern entsprechend ändern.

Kabbalismus gegen Hochleistungsrechner und der Hochleistungsrechner geht in die Knie: An einer simplen Additions- oder Subtraktionsaufgabe:

Nehmen Sie dann noch einen Bibeltext oder heiligen Text als Passwortsätze, dann ist das eine stark mystische Verschlüsselung..

Nun ja, um ehrlich zu sein ist dieser Code nur Bestandteil meines Programmes NONSA, wo das nur ein Durchlauf von Mindestens 13 darstellt und mit anderen Verschlüsselungswegen kombiniert wird.

Ich gebe unten den Quelltext an und erkläre das in einfachen Worten in Javascript. Ich bin sozusagen einer der letzten Esoteriker, der das Wissen der alten Zeit portiert und damit etwas schafft, welches an Zauberei grenzt...


Hier erstmal eine Demo zum ausprobieren: Der Text kann beliebig lang sein und Leerzeichen werden natürlich auch verschlüsselt...



Demo



Numerologische Verschlüsselung mit Caesar

Geben Sie hier ein möglichst Password oder ganze Textseiten ein, je mehr, desto sicherer, am besten so lang wie der zu verschluesselnde Text...Es muss ein Passwort eingegeben werden, weil ansonsten keine Änderung eintritt - und sei es nur ein Buchstabe...


Geben Sie hier den Text ein, den Sie verschlüsseln wollen und drücken Sie den Encode-Button - zum Entschlüsseln dann den Decode-Button...








Download

Hier einmal der komplette Code für eine einfache Seite:

---

<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;
}


</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>
<br></div>
<br>
</FORM></center>
</body>
</html>

----


Codeerklärung

Erklärung des Quellcodes im Schnelldurchlauf: Ist also ein HTML-Seite. Die hat zwei Textareas, eine mit Namen pass für die Passwortsätze und einmal mit Namen Dialog für den zu verschlüsselnden Text. Das ganze zur Adressierung in einem Form- Attribut mit Namen oder eben ID changeform.

Über den Button 1-Click-encode wird die Funktion enc13() gestartet. Bis hierher dürfte alles klar sein, also mal schauen, was passiert, wenn ich einen zu verschlüsselnden Text und ein Passwort eingebe:

<SCRIPT LANGUAGE="JavaScript"><!--
function enc13() {
pwssatz=document.changeForm.pass.value;
satz = document.changeForm.dialog.value;
anton=pwssatz;

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

Nun wird also Javascript gestartet. Danach werden Variablen geschaffen, die den Text des Passwortsatzes (pwssatz) und den zu entschlüsselnden Text (satz) beinhalten

Danach wird mit einer While-Schleife der Passwortsatz so lange noch einmal angehängt (anton), bis die Länge des zu verschlüsselnden Textes (satz.length) kleiner ist, als die Passwortsätze (pwssatz.length) sind.

Weil Schleifen nicht einfach sind, vielleicht noch ein Wort dazu: Ich habe also ein Passwortsatz mit zwei Buchstaben und einen zu verschlüsselnden Text mit sechs Buchstaben. Dann ist das Passwort beim ersten Durchgang kleiner als der Text, also wird das Passwort mit zwei Buchstaben des Passworttextes ergänzt, besteht also aus vier Buchstaben. Beim zweiten Durchgang ist vier immer noch kleiner sechs, also geht es nochmal durch die Schleife und wiederum werden zwei Buchstaben angehängt. 6 Buchstaben des Passwortes sind nun gleich sechs Buchstaben des zu verschlüssendeln Textes: Die Schleife wird nun abgebrochen, weil die Passwortlänge nicht mehr kleiner als der zu verschlüsselnde Text ist und ich habe mein Ziel erreicht:

Auf jeden Buchstaben des zu verschlüsselnden Textes wird es nun einen Buchstaben des Passwortes geben...

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 == "?") 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;
  
Hier spare ich ein wenig Wiederholung des Codes.

Als erstes brauche ich eine for Schleife, in dem der Rest des Codes abläuft. Diese wird solange durchlaufen, bis die Satzlänge des zu verschlüsselnden Textes erreicht wird (satz.length).

Streng genommen läuft Javascript numerologisch ab. Jeder Buchstabe des zu verschlüsselnden Textes erhält erstmal eine Ordnungsnummer von 0 bis zum ende des Textes.

passw = eval("pwssatz.charAt(" +ilx+")");

Ich ziehe nun im ersten Durchlauf den ersten Buchstaben des Passwortes...beim zweiten Durchlauf den zweiten Buchstaben des Passwortes...(immer parallel zum Buchstaben des  zu verschlüsselnden Text - das kommt später, aber wir synchronisieren durch die Variable ilx schon hier...).

Danach Vergleiche ich den Buchstaben mit den folgenden von mir erstellten Werten. Ein kleines a erhält also die Nummer 1.

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;
}

In diesem kleinen Codeabschnitt ist schon die gesamte Berechnung enthalten:  nr = satz.charCodeAt(ilx); Der Buchstabe des zu verschlüsselnden Textes wird beim ersten Buchstaben mit der Zahl von der Schleife (ilx) gezogen und die Zahl des UTF-8 Codes (hex) ermittelt.

Schauen Sie sich bitte dazu die Tabelle hier an:  http://www.utf8-zeichentabelle.de/

if (31<nr && nr<123)

Wenn also die die UTF-8 Zahl zwischen 31 und 123 liegt, dann gibt es eine der folgenden Alternativen:

{
    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];

1.  Die Zahl des Versatzes wird addiert : nnr = nr + versatz;
2.  Liegt die Ergebniszahl über dem Spektrum der UTF-8 Tabelle, dann Rechne ich von der Einstiegszahl beginnend wieder hoch if (nnr>122) nnr = 31 + (nnr-122);
3. Liegt die Zahl unterhalb des Spektrums der UTF-8 Tabelle, dann rechne ich die Zahl von der Endzahl wieder runter...if (nnr<32)  nnr =  122 - (31 - nnr);

Danach wandle ich die Zahl in einen Buchstaben um und addiere den Buchstaben in einer neuen Variablen, die mit jedem Durchlauf der Schleife anwächst.

4. Dem nicht genug: Ist der Buchstabe des zu entschlüsselnden Textes unbekannt und nicht im Spektrum von Beginn an, dann wird gar nichts verändert, sondern der Buchstabe so, wie er ist, übernommen else neuersatz += satz[ilx];

Am Ende wird der verschlüsselte Text wieder ausgegeben: 

 }

document.changeForm.dialog.value = neuerspatz;
}

Fertig: Beim Dekodieren wird fast derselbe Text verwendet, nur eben umgekehrt in der Funktion dec13() mit anderen Variablen-Namen. Kommt nur ein Name einer Variablen ein zweites Mal vor, dann funktioniert die Funktion nicht mehr!!!

Lediglich die Versatzzahl muss nun gegenteilig sein: also statt Plus 1 muss nun Minus 1 gewählt werden: Das brauche ich nicht nochmal zu erklären?


Für Esoteriker, die ein wenig nach der Kabbala arbeiten möchten: Einfach die Werte beim Encodieren und Dekodieren des Passwortes  entsprechend der Kabbala ändern, also für ein kleines a weiterhin eine 1 https://de.wikipedia.org/wiki/Zahlensymbolik

Dann ist noch das Problem da, dass ch und andere Kombinationen andere Werte haben: Das würde ich mit Austausch dieser Buchstaben in exotische Zeichen der UTF-8 Tabelle kompensieren...ist mir ehrlich gesagt zu zeitaufwendig...

---

Fazit

Cäsar, Kabbala und Numerologie gegen normale Verschlüsselung.  Das Wort wird durch das Wort zum Schlüssel - eine Art Übersetzungsprogramm  auf numerologischer Basis.

Cäsar wäre begeistert gewesen. Jeder Buchstabe und jedes Zeichen erhalten eine eigene Rotation, die der User des Programms festlegt: Mit unsinnigen Texten oder auch gern mit Texten aus heiligen Schriften.

Der Entschlüssler weiß nicht, welche Addition oder Subtraktion zu Grunde liegt. Er sieht nur die Buchstaben oder eben deren Zahlenwerte.

Diese Art der semantischen Verschlüsselung stelle ich als Alternative zu all den modernen Verschlüsselungsprogrammen.

Diese Verschlüsselung ist nur ein Teil meines umfangreicheren Projektes NONSA.

Nachtrag

Der Autor ist seinen Veröffentlichungen natürlich meilenweit voraus: Mit Hilfe mehrdeminsionaler Sequenzen kann der hier verwendete Schlüssel um ein vielfaches gesteigert werden: Philosophisch gesehen ist das nur ein brüchiger Ansatz aus dem Land der perfekten Formen, den ich in Nonsa dann noch unperfekter verarbeitet habe...

Ich werde in Zukunft nicht mehr alles mit der Öffentlichkeit teilen - nicht mal mit dem PC.

Ich werde jemand suchen, der das Potential in den Ansätzen erkennt und wer mich anständig bezahlt, dem kann ich dann nach den hier veröffentlichten Basis-Daten ein wirklich einmaliges Verschlüsselungsprogramm erstellen - ich glaube es gibt genug Interesenten, jeder darf sich beim Autor diesbezüglich melden: Mirt ist es im Prinzip egal, wir modernen weltweiten Esoteriker haben keinen Staat, den wir dienen müssten.

Ansonsten werde ich natürlich weiterhin Grundlagen posten und wer Javascript beherrscht kann Alternativen zu den etablierten Programmen erstellen: Caesar hat Programmierer geschätzt, die die Kunst des Verschlüsselns beherrschen, die kabbalistischen Mystiker waren angesehende Menschen und nur der Autor dieser Webseite wird bewusst übersehen - das ist nicht ganz fair...

Kleiner Scherz am Schluss: Es gibt eine ganz einfache Möglichkeit, wie sie mit jemand einen unknackbaren Code aushandeln: Die Lottozahlen in Deutschland wurden seit anbeginn registriert: Nehmen sie einfach die Tipps als Verschiebungszahl.

Da bekommen sie pro Tipp sieben Zahlen, die absolut zufällig sinde! Sie gewinnen zwar keine Million, aber der Empfänger kann dann jeden Buchstaben nach den Lottozahlen wieder  zurückververschieben.

Kein Computer dieser welt kann so einen Code knacken und Lotto gibt es nicht nur in Deutschland...