Middle
Quali proprietà dovrebbe avere una buona funzione di hash?
sobes.tech AI
Risposta dell'AI
Una buona funzione di hash dovrebbe possedere le seguenti proprietà:
- Determinismo: per lo stesso valore di input, deve sempre restituire lo stesso hash.
- Distribuzione uniforme: minimizzare le collisioni, distribuendo i valori in modo uniforme nello spazio di hash.
- Velocità: calcolata rapidamente per non rallentare il funzionamento del programma.
- Resistenza alle collisioni: dati di input diversi devono, con alta probabilità, generare hash diversi.
- Sensibilità minima a input simili: una piccola modifica ai dati di input deve portare a un cambiamento significativo dell'hash (effetto valanga).
Esempio in Go per calcolare l'hash di una stringa usando il pacchetto incorporato hash/fnv:
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"))
}