Middle
Jaké vlastnosti by měla mít dobrá hashovací funkce?
sobes.tech AI
Odpověď od AI
Dobrá hashovací funkce by měla mít následující vlastnosti:
- Deterministická: pro stejnou vstupní hodnotu by měla vždy vracet stejný hash.
- Rovnoměrné rozložení: minimalizovat kolize, rovnoměrně rozdělovat hodnoty v prostoru hashů.
- Rychlost: měla by být vypočítána rychle, aby nezpomalovala chod programu.
- Odolnost vůči kolizím: různé vstupy by měly s vysokou pravděpodobností dávat různé hash hodnoty.
- Minimální citlivost na podobné vstupy: malá změna vstupních dat by měla vést k výrazné změně hash (efekt laviny).
Příklad v Go pro výpočet hash řetězce s použitím vestavěného balíčku 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"))
}