Middle
Quais propriedades uma boa função de hash deve possuir?
sobes.tech IA
Resposta da IA
Uma boa função de hash deve possuir as seguintes propriedades:
- Determinismo: para o mesmo valor de entrada, deve sempre retornar o mesmo hash.
- Distribuição uniforme: minimizar colisões, distribuindo os valores de forma uniforme pelo espaço de hash.
- Rapidez: deve ser calculada rapidamente para não atrasar o funcionamento do programa.
- Resistência a colisões: diferentes entradas devem, com alta probabilidade, gerar hashes diferentes.
- Sensibilidade mínima a entradas semelhantes: uma pequena alteração nos dados de entrada deve levar a uma mudança significativa no hash (efeito de avalanche).
Exemplo em Go para calcular o hash de uma string usando o pacote embutido 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"))
}