Sobes.tech
Middle

Aan welke eigenschappen moet een goede hash-functie voldoen?

sobes.tech AI

Antwoord van AI

Een goede hash-functie moet de volgende eigenschappen bezitten:

  • Deterministisch: voor dezelfde invoerwaarde altijd dezelfde hash teruggeven.
  • Egalmatige verdeling: minimaliseer botsingen, verdeel de waarden gelijkmatig over de hash-ruimte.
  • Snelheid: snel te berekenen, zodat het de werking van het programma niet vertraagt.
  • Weerstand tegen botsingen: verschillende invoerwaarden moeten met hoge waarschijnlijkheid verschillende hashes geven.
  • Minimale gevoeligheid voor vergelijkbare invoer: een kleine wijziging in de invoer moet leiden tot een significante verandering in de hash (lawineffect).

Voorbeeld in Go om de hash van een string te berekenen met behulp van het ingebouwde hash/fnv pakket:

import (
    "fmt"
    "hash/fnv"
)

func hash(s string) uint32 {
    h := fnv.New32a()
    h.Write([]byte(s))
    return h.Sum32()
}

func main() {
    fmt.Println(hash("example"))
}