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"))
}