FNVハッシュ関数は64bit or 32bitでの出力を行うことができるハッシュ関数です.
SHAシリーズ(SHA-1など)やMDシリーズ(MD5など)などとは異なり, 衝突耐性よりも実装が効率的な事を重視しているっぽい.
逆にセキュリティなどを重視するところでは使っちゃダメですね.
サンプルコードをメモっとく.
package main import ( "fmt" "hash/fnv" ) func hash32(message []byte) uint32 { h := fnv.New32() h.Write(message) sum := h.Sum32() return sum } func hash64(message []byte) uint64 { h := fnv.New64() h.Write(message) sum := h.Sum64() return sum } func main() { fmt.Println(hash32([]byte("Test Hashing"))) fmt.Println(hash64([]byte("Test Hashing"))) }