Hastumer
Umarmt Bäume.
Nachdem irgendwie die anderen Projekte alle ins Wasser gefallen sind, hab ich mich dazu entschlossen, diesmal etwas WIRKLICH zuende zu bringen. Ich mache meinen eigenen Verschlüsseler! Das Prinzip ist eigentlich ganz einfach:
Wir haben eine Datenbank mit allen Symbolen, die einen festen numerischen Wert zugewiesen kriegen, jedoch darf dieser Wert keine Null in sich haben. Heißt:
Jetzt fragt ihr euch vielleicht: "Aber wieso erst a-f, dann die Zahlen, und dann erst die anderen Buchstaben? Eigentlich ganz einfach: Ich arbeite mit einer Funktion in Lua, die mir die Hexadezimalen Zahlenwerte gibt. Das heißt: Ich kann Programme kleiner verschlüsseln! Diese Zahlenwerte werden allerdings nicht bei Textdateien wiedergegeben, deswegen muss ich auch die anderen Symbole in die Datenbank schreiben.
Jedes Symbol in der Datei wird durch die Datenbank gezogen und mit dem dazugehörigem Zeichen ersetzt, es wird eine Null dahintergesetzt und der Spaß beginnt von vorne. (Also rekursiv, bis das Programm durch ist.) Dann kommt Mathe zum Einsatz:
Es wird immer die Differenz von den Werten gebildet (Nur der erste Wert ist der ursprüngliche Wert.), wenn zwei Werte hintereinander gleich sind, wird einfach nur 00 geschrieben, also keine Zahl. Beispiel:
Code:
1 = a, 2 = b, 3 = c, 4 = d, 5 = e, 6 = f, 7 = 1, 8 = 2, 9 = 3, 11 = 4, 12 = 5, 13 = 6, 14 = 7, 15 = 8, 16 = 9, 17 = 0, 18 = g, 19 = h, 21 = i, usw.
Jedes Symbol in der Datei wird durch die Datenbank gezogen und mit dem dazugehörigem Zeichen ersetzt, es wird eine Null dahintergesetzt und der Spaß beginnt von vorne. (Also rekursiv, bis das Programm durch ist.) Dann kommt Mathe zum Einsatz:
Es wird immer die Differenz von den Werten gebildet (Nur der erste Wert ist der ursprüngliche Wert.), wenn zwei Werte hintereinander gleich sind, wird einfach nur 00 geschrieben, also keine Zahl. Beispiel:
Wir haben den String "1337abc". Der soll jetzt verschlüsselt werden. Also gucken wir in der Tabelle nach, welchen Wert die jeweiligen Symbole haben (Siehe oben). 1 = 7, 3 = 9, 3 = 9, 7 = 14, a = 1, b = 2, c = 3.
Schreiben wir jetzt die Werte in der oben genannten Notation auf, sieht das ganze folgendermaßen aus:
Jetzt müssen wir aber noch die Differenzen bilden:
Schreiben wir jetzt die Werte in der oben genannten Notation auf, sieht das ganze folgendermaßen aus:
Code:
70909014010203
Code:
Erst schreiben wir "70", dann rechnen wir 7-9, das ist -2, also "70-20", 9-9 = 0, also "70-200" usw..
Der fertige String lautet also dann:
"[I][U]70-200-5013010-10-1[/U][/I]"
[/SPOILER]
Wenn ihr das jetzt entschlüsseln wollt, macht ihr einfach den ganzen Scheiß rückwärts!
[SPOILER]"70-200-5013010-10-1" war ja unser verschlüsselter String.
Dann rechnen wir:
7-(-2) = 7+2 = 9, Also "7090". Dann kommt 9-0 = 9, also "7090", und so weiter.
Und dann kriegen wir wieder unseren nicht fertigen String "70909014010203", den schicken wir jetzt wieder durch die Datenbank, und zack, wir kriegen wieder unsere Nachricht "1337abc" heraus!
[/SPOILER]
So funktioniert das im groben. Ich will außerdem noch mehrere zufällig genommene Datenbanken machen, wo dann am Anfang per Passwort (Hashseed) dann die Datenbank genommen wird, womit es verschlüsselt wurde. Heißt: Das wird ein Projekt, was lange dauern wird!
Falls es Symbole gibt, die die Datenbank [B]nicht[/B] kennt, wird das Symbol einfach so, wie es war, hingeschrieben (auch von Nullen umgeben)
[/SPOILER]
Ihr könnt mir auch gerne Datenbanken einschicken! Ich werde später noch alle Symbole hier reineditieren, die vorhanden sein müssen.
Format der Datenbanken:
datenbank = {{"a","1"},{"b","2"}}, usw, erst das Symbol, dann der Zahlenwert. "datenbank" ist austauschbar, logischerweise! Wenn ihr mir eine Datenbank einschickt, werdet ihr natürlich im Programm erwähnt. (Nur, wenn die Datenbank genommen wird, es wird dann oben in etwa stehen: "Datenbank eingereicht von XYZ"
Danke, dass ihr euch Zeit genommen habt, meinen langen Text zu lesen, ich freue mich immer über Verbesserungsvorschläge!