| 

.NET C# Java Javascript Exception

4
Hallo,

ich möchte mit C# ein doppeltes Hashing bauen. Mein Problem ist, ich vertehe das nicht so ganz. Kennt sich da jemand von euch etwas aus?

Eine sehr einfache Erklärung wäre richtig hilfreich (ohne Code).
01.04.2014
SaBra 35 1 4
Ich beantworte deine Frage sehr gerne; willst du nur doppelt hashen, oder willst du "echtes" double hashing?
Falkner 01.04.2014
Ich will mit "double hashing" eine Tabelle auffüllen. Einfaches doppeltes hashing war nicht gemeint. Da war ich wohl etwas zu undeutlich, sorry.
SaBra 01.04.2014
1 Antwort
5
Wie gesagt, so getan; hier meine Erklärung:

Das folgende Beispiel ist sehr einfach und auf Einfachheit ausgelegt. Die folgenden Hashfunktionen basieren auf "Sedgewick" (einfach mal googln):

k = Schlüssel (Hier ist jedes Zeichen v. Schlüssel ein Buchstabe)

M = Anzahl der Tabellenfelder, die aufgefüllt werden sollen

U = Anzahl der möglichen Bits, die ein Zeichen vom Schlüssel (k) haben kann (hier sind das 8)


Die zwei benötigten Funktionen sind dann:


Funktion 1: hk = k mod M
Funktion 2: h2k = U - (k mod U)


Gemäss der Stellung, die jeder Buchstabe im Alphabet einnimmt, wird ein Schlüsselwort in Positionszahlen umgewandelt (Position im Alphabet). Also a = 1, b = 2 usw.



Für jeden Buchstaben von k durchläufst du jetzt die beiden Funktionen



Die Tabelle wird nun aufgefüllt

Das erste Zeichen wird in der Tabelle auf dem index hk eingeschrieben, wenn das Feld nicht besetzt ist. Falls doch, nimmst du das Ergebnis von h2k, welches du zu hk zuzählst und setzt das Zeichen dann auf den neuen Index. Falls dieser auch belegt sein sollte, zählst du wiederum h2k hinzu und setzt dort das Zeichen (usw.).

Zeichen für Zeichen wird dieser Vorgang wiederholt, bis die Tabelle gefüllt ist. Zu beachten ist dabei, dass Endlosschleifen entstehen können, auf die du reagieren musst.

Ich habe jetzt keine Ahnung, ob das eine einfache Erklärung war. Ich habe es so einfach gemacht, wie ich dachte, dass das einfach genug sei.
01.04.2014
Falkner 795 3 9
Endlich mal eine richtig gute Erklärung, danke. Ich hatte das bisher mit h2(k) nicht verstanden. Aber durch deine Erklärung ist mir das jetzt klar geworden. Damit ist meine Frage beantwortet. Nochmal vielen Dank
SaBra 01.04.2014
@SaBra: Gern geschehen! Wenn die Frage jetzt beantwortet ist, könntest du den grünen Haken anklicken. Dann ist für alle sichtbar, dass das Thema abgeschlossen ist.
Falkner 01.04.2014
Ach so, hatte mich schon gefragt, wie man das hier macht. Erledigt!
SaBra 01.04.2014

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH