![]() |
PC-Wortschatz
Hi Leute!
Zurzeit machen wir in Infromatik in der Schule Kryptographie(Verschlüsslungen). Nun findet eine Projektarbeit statt, in der wir in gruppen Programme zum Thema schreiben sollen. Auf der Suche nach Ideen ist mir etwas isn den Sinn gekommen. Ein Pragramm, dass verschlüsselte Texte knack! Hierbei soll es zunächst um einfache Verschlüsselungen gehen. Dies verläuft nach der Cäsar-Verschlüsslung, indem jeder buchstabe des textes um eine bestimmte Stelle im Alphabet verschoben wird! Beispiel: Wenn der orginaltext "abc" heißt und dieser mit dem schlüssel "b" verschlüsselt wird, dann heißt er danach "bcd", also um eine stelle im alphabet verschoben. Das Programm zum knacken eines solchen verschlüsselten Textes soll nun testen, ob wenn man den verschlüsselten Text verschiebt, irgendwann ein sinnvoller Text herauskommt. D.h. es verschiebtn den Text immer um eine Stelle im alphabet weiter, biss ein sinnvoller text rauskommt. Gibt es eine Funktion mit der ich das Programm prüfen lassen kann, ob der Text sinnvoll ist, bzw. das prüft, ob die vorhandenen wörter des Textes ine einem Wortschatz vorhanden sind, den der PC besitzt? |
Re: PC-Wortschatz
Es gibt Wördterbücher, aber die sind zum Brechen der Caesar-Chiffre unnötiger Aufwand - die Buchstabenhäufigkeit sollte locker ausreichen ;)
|
Re: PC-Wortschatz
Hi,
Also du entschlüsselst den Text und speicherst dann jedes Wort z.B. in einer Stringlist. Dann brauchst du halt ein Wörterbuch. Am besten ein großes. Dann guckst du für jedes Wort aus dem (evtl) entschlüsselten Text ob es dazu einen Eintrag im Wörterbuch gibt. Du zählst mit wie viele Wörter gefunden wurden und hast dann am Ende z.B. das Ergebnis dass 15% aller entschlüsselten Wörter im Wörterbuch zu finden waren. Die Entschlüsselung scheint also schief gegangen zu sein. Oder dein Wörterbuch war zu klein :mrgreen: Ab welchem Prozentsatz der Text als "entschlüsselt" gilt musst du dann halt festlegen. |
Re: PC-Wortschatz
Wenn man die Sprache des Textes kennt, könnte man den Text auf charakteristische Buchstabenfolgen untersuchen. Im Deutschen z.B. nach "sch", "ch", "st", "mm", "en", usw.
Daraus kann man dann Warscheinlichkeiten ableiten, dass der entschlüsselte Text richtig ist. Edit: Genauso kann man natürlich auch auf Zeichenfolgen untersuchen, die eher unwarscheinlich sind, dass sie vorkommen. Z.B. "mf" ist im deutschen sehr selten. Ok, die Franken sagen "Semf", aber das zählt nicht. :stupid: |
Re: PC-Wortschatz
|
Re: PC-Wortschatz
hmm wie soll das mit dem wörterbuch aussehen?
Gibt es eins, das jeder Windows PC hat oder muss ich da extra eins besorgen? wie binde ich das in delphi ein? |
Re: PC-Wortschatz
Windows hat kein Wörterbuch ... wozu auch und welche Wörter sollten dann da drinnen sein, damit es für alle Windowsnutzer "nützlich" wäre?
[dp]Wörterbuch[/dp] |
Re: PC-Wortschatz
Ich würd es mir ganz einfach machen:
Text entschlüsseln Word fragen wieviele Fehler darin sind. fertig Gruß K-H |
Re: PC-Wortschatz
???
kann man ein selbstgeschriebenes Programm word nach was fragen lassen? versteh ich net! |
Re: PC-Wortschatz
Such mal in der DP nach
![]() Da landet man z.B. hier: ![]() Eine weitere Idee wäre, jedes entschlüsselte Wort mit Indy in Google suchen zu lassen. Google zeigt dann oben recht die Anzahl der Fundstellen an. Diese zusammenzählen. Je höher die Zahl, desto warscheinlicher ist die Richtigkeit des Textes. |
Re: PC-Wortschatz
Das wird ja langsam schlimm hier ... erinnert mich daran:
![]() Also falls du wirklich so eine Wörterbuchdatei haben möchtest, guck mal nach DAWG ( ![]() Aber ich sag's auch gerne nochmal - ein Wörterbuchg (geschweige denn Word Rechtschreibprüfung fernsteuern) ist hier gar nicht nötig da bei Caesar eine Häufigkeitsanalyse reichen sollte. |
Re: PC-Wortschatz
Da muß ich mich entschuldigen:
Ich meinte den Text entschlüsseln lassen, und den entschlüsselten Text dann per Copy und Paste nach Word bringen und dann prüfen lassen. Die Word-Fernsteuerung ist da wohl ein wenig zu aufwendig. Die Möglichkeit google zu nutzen, halte ich für nicht so praktikabel, wenn ich überlege wie oft ich auch zu haarsträubenden Schreibfehlern noch Einträge finde. Falls Du Informationen zur statistischen Analyse brauchst: ![]() Das läßt sich wirklich ruck zuck umsetzten. Gruß K-H |
Re: PC-Wortschatz
hmm wenn ich das nach Häufgkeit der Buchstaben mache,
wie programmiere ich sowas? |
Re: PC-Wortschatz
Du zählst die Buchstaben und vergleichst die Werte mit einer entsprechenden Häufigkeitstabelle ... dann probierst du jeweils alle 26 Möglichkeiten der Entschlüssellung durch und da wo die Werte am meißten übereinstimmen, das ist am Wahrscheinlichsten die richtige Lösung.
Sollte aber, in dem von mir verlinkten PDF, auch so erwähnt worden sein. |
Re: PC-Wortschatz
hmm und wie lasse ich ihn das vergleichen?
|
Re: PC-Wortschatz
Sry aber hab keine Ahnung wie ich ihm die Tabelle einverleiben soll, und wie man das mit Prozenten macht...:(
|
Re: PC-Wortschatz
Zu beachten ist, dass diese Methode nur bei (relativ) langen Texten ein zuverlässiges Ergebnis liefert. Wenn du nur einen kurzen Satz oder einpaar Wörter hast, ist es fast schon Zufall, wenn das richtige Ergebnis rauskommt.
Patti Edit: In einem Buch über verschiedene Verschlüsselungsmethoden wird als Beispiel das Wort "Staubsauger" genannt. Es enthält z.B. nur ein "e", dafür aber überdurchschnittlich viele "a" und "s". Eine "Entschlüsselung" nach der oben genannten Methode führt also zu irgendeinem Unsinn. Das Buch sagt aber auch, dass bei genügend großem Textmaterial die Häufigkeit der Buchstaben ziemlich genau der Statistik entspricht (irgendwo auch logisch). Wenn du also einen ganzen Text entschlüsseln willst, dann sollte die Methode klappen. Bei nur wenigen Zeichen versagt sie aber wahrscheinlich auf ganzer Linie. |
Re: PC-Wortschatz
angeblich sollen schon 80 Zeichen dafür ausreichen.
bei nur wenigen Wörtern kann es auch sein, daß gerade diese Wörter nicht im Wörterbuch drinsteht, sie die Word-Rechtschreibprüfung nicht kennt oder Google nur wenige Suchergebnis, bzw. bei mehrere kurzen Wörtern (verschiedener Entschlüsselungsversuche) verhältnismäßig zuviele Suchergebnisse liefert, so daß da auch keine Automatik möglich ist. |
Re: PC-Wortschatz
@himitsu: Siehe oben: Es kommt halt darauf an, wie viel Text er hat...
@Topic: Am besten zählst du erstmal die absolute Häufigkeit der verschiedenen Buchstaben. Mache dir ein Array of integer mit 26 (wenn du Umlaute mitzählen willst dann eben 29, mit scharfem "s" 30) Feldern. Diese Felder müssen am Anfang natürlich 0 sein. Dann gehst du Zeichen für Zeichen deines Textes durch und erhöhst jeweils den entsprechenden Wert. Also ungefähr so:
Delphi-Quellcode:
In dem Buchstaben-Array hast du dann jeweils die absolute Häufigkeit der Buchstaben. Mit der kannst du dann im nächsten Schritt weiterarbeiten. Noch eine kleine Anmerkung: den Case-Teil kannst du auch etwas vereinfachen, z.b. so:
var Buchstaben : array[0..25] of integer;
var i : integer; var c : Char; begin //-- if Memo1.Text <> '' then begin for i := Low(Buchstaben) to High(Buchstaben) do Buchstaben[i] := 0; // for i := 1 to Length(Memo1.Text) do begin c := AnsiUpperCase(Memo1.Text[i])[1]; // case c of 'A' : inc(Buchstaben[0]); 'B' : inc(Buchstaben[1]); // und so weiter end; end; end; end;
Delphi-Quellcode:
So kannst du dir die case-Abfrage sparen, ist aber wahrscheinlich etwas schwieriger zu verstehen.
if c in ['A'..'Z'] then inc(Buchstaben[Ord(c)-Ord('A')]);
MFG Patti |
Re: PC-Wortschatz
cool danke!
das mit dem umwandeln in den ascicode hätte ich auch gemacht. Mit dem Rest muss ich mich nochmal beschäftigen...^^ |
Re: PC-Wortschatz
hmm aber wie gebe ich den entschlüsselten text wieder aus?
|
Re: PC-Wortschatz
Wie weit bist du denn bis jetzt? Hast du schon eine Möglichkeit gefunden, zu bestimmen, um wie viel die Buchstaben im Alphabet verschoben wurden?
|
Re: PC-Wortschatz
ne sry!
hab ziemlich viel zu lernen zur zeit... ...hatte nicht so die zeit mich damit zu beschäftigen°! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz