Es ist natürlich jedem selbst überlassen, wie er einen hash bildet, aber strings sind da eher sehr suboptimal.Hashs sind in der Regel Zahlen, weil alles Zahlen sind. Aber es spricht nichts gegen Hash-Strings!?
Zum einen hat Kmitskas Variante eine zahl mit einer 64-Bit-Magic Number XOR-Verknüpft, das heißt man hat hier eine Konvertierung von 8 auf 64 Bit und dann wieder ein Verlust von 56 Bit. Dann werden die Zeichen einzeln gehasht gespeichert, das kann verwendet werden um daraus auf die Magic-Number zu schließen, kennt man nämlich einen Buchstaben und den gehashten Buchstaben, kann man aus der Beziehung:
A ^ B = C; C ^A = B; C ^ B = A
Die magic-Number Rekonstruieren und der Hash ist wirkungslos.
Daher addiert man auch bei den meisten einfachen hash-implementationen(wie der für Dedpue) die Einzeln gehashten words oder long words auf den selben Int wieder auf, sodass am ende zwar eine sehr eindeutige Zahl herauskommt, man aber weder auf das Passwort noch auf die Magic-Number schließen kann.
Am ende kann man aber natürlich den int in eine String-Repräsentation wandeln.
Für dein Beispiel sähe das so aus:
Code: Alles auswählen
unsigned long long hashCode( string text )
{
if(text.length() != 0)
{
unsigned long long hash;
for(int i=0; i<text.length(); i++)
{
hash += text[i]^ 56946325879541236589545632145;
}
return hash;
}
else
{
return 0;
}
}
Klingt für mich normal^^Dort bekam ich erstmal einen deutlichen Dämpfer. Alles Bekloppte da, insbesondere die Lehrer. Mein Mathelehrer rechnete die Wurzel auf drei Stellen hinterm Komma genau im Kopf aus, bevor wir die Aufgabe in den Taschenrechner eingegeben hatten. Für ihn war alles trivial. Für mich nicht
Ich habe aber auch mal eine Gleichung in Physik an der Tafel ohne Taschenrechner gerechnet und war schneller beim Ergebnis als die Klassenkameraden mit Taschenrechner^^
Grün = Moderatorkmitska hat geschrieben:d.h.!
Zeig das du nicht unfähig und nicht überdurchschnittlich Dumm bist und dann hast du eine Chance bei der nächsten Moderatoren-Wahl zum Moderator ernannt zu werden

MfG cloidnerux