2008-12-22 4 views
6

Ich habe eine Liste von (64-Bit-) Adressen, die einen Stack-Frame darstellen, und ich möchte diese zu einer einzelnen 64-Bit-Nummer hashen, um diejenigen zu identifizieren zuvor gesehen. Es gibt höchstens 128 Adressen.Guter Hash-Algorithmus für die Liste der (Speicher-) Adressen

Mein aktueller Algorithmus berechnet den Hash, indem er durch die Liste iteriert, jede Adresse in den Hashwert einsortiert und den Hashwert um 11 Bit pro Zyklus rotiert.

Haben Sie bessere Vorschläge?

+0

Warum Hash sie überhaupt und nicht nur auf intptr_t (vorausgesetzt, C)? – Christoph

+0

Ich denke, er versucht, Programmpfade zu überprüfen. Er versucht, einen Pfad von 64-Bit-Adressen zu speichern. Die CRC64-Antwort scheint mir gut zu sein. – Harvey

+0

Er will die ganze Liste Hash - ich habe das nicht bekommen, danke für die Klarstellung ... – Christoph

Antwort

4

Sie könnten eine Art von CRC betrachten.

Vielleicht ein CRC64.

+0

CRC sollte nicht als Hash verwendet werden, es hat sehr schlechte Kollisionsverhalten. – martinus

0

Wenn die Leistung kein Problem ist, können Sie versuchen, einen kryptografischen Hash zu verwenden - abgeschnitten, wie viele Bytes Sie möchten.