Einzelnen Beitrag anzeigen

Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Friedman-Angriff auf eine Vigenère-Verschlüsselung

  Alt 11. Apr 2008, 18:43
Ist das nicht einfach die Differenz zwischen P und E? Also 11 (J)?
Und wenn du ein A für das E rausbekommen hättest, also A-E=4 musst du 26-4=22= W benutzen.

Also: Sei x der Häufigste Buchstabe
Delphi-Quellcode:
if ord(x)>ord('E') then
 chiffre = chr(ord(x)-ord("E")+ord("A"))
 else
 chiffre = chr( (26-(ord("E")-ord(X))+ord("A"));
Es dürfte aber etwas zu einfach sein, nur den häufigsten Buchstaben als "E" zu deklarieren.
Mit etwas Rechenzeit wäre diese Möglichkeit ganz gut:
Mache folgendes für jeden möglichen Schlüssel:
entschlüssel die fraglichen Buchstaben mit diesem Buchstaben und erstelle eine geordnete Liste der Buchstaben nach ihrer Häufigkeit.
nehme die deutsche Verteilung und vergleiche für alle Paare an Buchstaben, ob ihre Reihenfolge in beiden Listen übereinstimmen. Wenn das der Fall ist, schreibe diesem Schlüssel einen Punkt gut.

Erkläre den Buchstaben zum Sieger, der die meisten Punkte geholt hat.

Ich gehe davon aus, dass so ein Algorithmus bessere Ergebnisse erzielt.


Vor ein paar Jahren habe ich mal ein halbautomatisches Programm geschrieben, bei dem die Häufigkeitsverteilung des Textes und der deutschen Sprache grafisch angezeigt wurden und man dann so lange beide Verteilungen gegeneinander verschoben hat, bis sie die beste Deckung hatten.
Hier
gibts Code und Programm. Vielleicht hilft's dir weiter, vielleicht wenn du noch ein Referat halten musst und die Idee klar machen willst.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat