www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

Daten merken
Auto-Login
Registrieren
 
Online
niemand
 
Forumsuche
Suche nach:

Logo - DracheHaskell-Forum

blizz

Gepostet:
07.06.2006 16:57

Vigenère entschlüsseln / Korrelationsfunktion und Autokorrelation  
Kann das einer von euch?

Einen Vigenère-Code bricht man auf folgende Weise: Als erstes bestimmt man die Länge l des Schlüsselworts. Danach
sind für ein festes c mit 0 < c < l die Zeichen c + k · l, k = 0, 1, . . . jeweils mit dem gleichen Cäsar-Code verschlüsselt.

Um die Schlüssellänge zu bestimmen, nutzt man aus, dass zwei mit dem gleichen Cäsar-Code verschlüsselte Texte
einander ähnlicher sind, als zwei mit unterschiedlichen Ceasar-Codes verschlüsselte. Ein Maÿ für die Ähnlichkeit
zweier Texte bietet die Korrelationsfunktion D. Sie kann folgendermaßen deniert werden:

Bild: --> http://www.stud.uni-karlsruhe.de/~upaun/info2/bild01.jpg

Dabei sollen s, t zwei Texte über dem gleichen Alphabet sein. Der Ausdruck s(i) soll das i-te Zeichen des Textes s
bezeichnen, und ls bzw. lt sind die Längen der Texte s und t.
Für die Bestimmung der Schlüssellänge berechnet man die Autokorrelation. Hierbei berechnet man alle zyklischen
Verschiebungen eines Textes und vergleicht sie mittels der Korrelation mit dem Ursprungstext. Im Fall eines mit
Vigenère verchlüsselten Textes kann man in der resultierenden Sequenz periodische Spitzen erkennen, wobei die Periode
entweder die Schlüssellänge oder ein Vielfaches davon ist.

a) Implementieren Sie die Korrelationsfunktion und die Autokorrelation.

Keine ahnung, wie ich das machen soll bzw wie ich anfangen soll.
ich hoffe ihr könnt mir helfen!
Zum Seitenanfang    
 
Jacke

Gepostet:
07.06.2006 21:00

   
hui das ist ja diesmal richtig viel, ich setz mich aber erst morgen früh dran ich hoffe das ist ok...bin grade ganz geschafft von der uni
zur korrelationsfunktion:
den zweiten teil kann man aufjedenfall mit ner if-abfrage machen...den ersten teil mit rekursion,

ich schreibe dir ne antwort bis 9uhr 30
Zum Seitenanfang    
 
Jacke

Gepostet:
08.06.2006 07:54

   

test=vigenere "akey" "geheimnis"

korre::String->String->Int
korre s [] = 0
korre [] t = 0
korre (si:s) (ti:t)
|(si==ti)=1+ (korre s t)
|otherwise= 0 + (korre s t)

--in acc steckt der um jeweils ein leerzeichen verschobene text
auto2::String->String->[Int]
auto2 [] acc=[]
auto2 (ti:t) acc= (korre (ti:t) acc): (auto2 t (' ':acc))


auto t =auto2 t ((' '):t) --hier wird die hilfsfunktion 2mal mit dem ursprungstext aufgerufen, die erste verschiebung wird auch gleich gemacht


aufruf mit
>auto test

ich hab das zyklische verschieben des textes mit leerzeichen gemacht , zumindest denke ich mal das es so verlangt war

gruß jacke
Zum Seitenanfang