Sobes.tech
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"))
}