In Hash-Tabellen, die Kollisionen durch lineares Abtasten auflösen , ist es sowohl erforderlich als auch ausreichend, dass die Hash-Funktion aus einer 5-unabhängigen Familie stammt, um die erwartete Leistung von sicherzustellen . (Suffizienz: "Lineares Testen mit konstanter Unabhängigkeit", Pagh et al. , Notwendigkeit: "Zur k-Unabhängigkeit, die für lineares Testen und min. Unabhängigkeit erforderlich ist", Pătraşcu und Thorup )
Nach meinem Verständnis verwenden die schnellsten bekannten fünf unabhängigen Familien die Tabellierung. Die Auswahl einer Funktion aus einer solchen Familie kann teuer sein. Daher möchte ich die Häufigkeit meiner Angriffe minimieren und dennoch Angriffe auf algorithmische Komplexität verhindern, wie in Crosby und Wallachs "Denial of Service via Algorithmic Complexity Attacks" beschrieben . Ich mache mir weniger Sorgen über Timing-Angriffe (dh Gegner mit Stoppuhren). Welche Konsequenzen hat die Wiederverwendung derselben Funktion:
- Wenn eine Hash-Tabelle wächst, die zu voll ist?
- Wenn Sie eine Hash-Tabelle verkleinern, die nicht voll genug ist?
- Beim Neuerstellen einer Hash-Tabelle, bei der zu viele "gelöschte" Bits gesetzt sind?
- In verschiedenen Hash-Tabellen, die einige gemeinsame Schlüssel enthalten können?
- In verschiedenen Hash-Tabellen, die keine gemeinsamen Schlüssel enthalten?