Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

Caesar-Shift-Code-Cracker programmieren

KoRny Boy / 13 Antworten / Flachansicht Nickles

hallo zusammen,

ich habe heute angefangen ein Programm zu schreiben das mit dem Caesar-Shift-Code verschlüsselte Texte entschlüsselt.

Als erstes wird der Cipher-Text analysiert. Die verschiedenen Buchstaben werden gezählt und deren Prozentsatz der im text enthaltenden Buchstaben wird jeweils berechnet.
Dann kann man mit Bruteforce den Originaltext herausbekommen was aber bis jetzt nur funktioniert wenn das Alphabet einfach nur um x Stellen verschoben worden ist.

Jetzt möchte ich noch den Text noch so entschlüsseln:
der buchstabe E kommt sehr häufig in englischen und deutschen texten vor, also soll das programm nach dem häufigsten Buchstaben im cipher text suchen und ihn durch eine E ersetzen. Die Prozentzahl des Vorkommens der einzelnen Buchstaben habe ich aus dem englsichen Buch The Code Book von Simon Singh. Also sollen quasi die Prozenzahlen aus dem Buch mit denen im Ciphertext verglichen werden.

Dann möchte ich die Bruteforce variante ausbauen, sodass wirklich jede möglichkeit ausprobiert wird(aber trotzdem so dass jeder Buchstabe einduetig durch einen anderen ersetzt wird). Im moment gibt es ja nur 26 möglcihkeiten; nämlich das verschieben des Alphabets bis es wieder im normalen zustand ist.

Dann noch ein letztes anliegen. Zur Zeit benutze ich Timer um eine Schleife ausführen zu können, denn wenn ich eine normale repeat-until oder for-schleife nehme, bleibt das programm ja stehen bis die schleife zu ende ist, aber bei längeren cipher-texten dauert das halt ziemlich lange und wenn ich die bruteforce variante ausbaue dann erst recht. gibt es eine schnellere möglichkeit als den timer zu benutzen ohne dass das programm stehen bleibt?

gruß korny boy

P.S. das alles wie immer in delphi 7

Wer anderen eine Grube gräbt ist selbst ein Schwein
bei Antwort benachrichtigen
Borlander KoRny Boy „falls die entschlüsselung mit dem prozentsatz fehlschlägt dann sollte...“
Optionen

Erstmal eine Frage vorweg: Nach welcher Methode willst Du überhaupt feststelle, ob die entschlüsselung korrekt ist? Irgendwie muß das ja von _softwareseite_ geprüft werden (keine Maus oder Tastatur wird 4*10^26 Klickvorgänge überstehen) ;-)

warum die rechnung 4*10^26 ?
Naja, wie aussagekräftig ist denn 403291461126605635584000000?)
Wenn man weiß das dies ungefähr 4 * 10^26 ist (also 26 Nullen hintendran) kann sich doch gleich was drunter vorstellen ;-)
1 Millon hat 6 Nullen, überlegen wir mal wie lange es dauern würde wenn wir eine Milliarde Kombinationen pro Sekunde abtesten könnten (werden weniger sein) - immer noch 4*10^17s (zum Vergleich: ein Jahr hat etwa 31*10^6 sekunden)...

Falls die Entschlüsselung nach %-Verteilung nicht erfolgreich sein sollte, so würden diese Werte doch immernoch noch eine Möglichkeit bieten die Suche u.U. stark ein zu schränken - sonst hast Du wie oben geschrieben nicht den Hauch einer Chance den Code zu Lebzeiten zu knacken...


Gruß
Borlander

bei Antwort benachrichtigen