How to generate hash number of a string in Go?

2020-05-20 07:33发布

For example:

hash("HelloWorld") = 1234567

Is there any built-in function could do this ?

Thanks.

标签: hash go
2条回答
可以哭但决不认输i
2楼-- · 2020-05-20 07:46

Here is a function you could use to generate a hash number:

// FNV32a hashes using fnv32a algorithm
func FNV32a(text string) uint32 {
    algorithm := fnv.New32a()
    algorithm.Write([]byte(text))
    return algorithm.Sum32()
}

I put together a group of those utility hash functions here: https://github.com/shomali11/util

You will find FNV32, FNV32a, FNV64, FNV64a, MD5, SHA1, SHA256 and SHA512

查看更多
聊天终结者
3楼-- · 2020-05-20 07:53

The hash package is helpful for this. Note it's an abstraction over specific hash implementations. Some ready made are found in the package subdirectories.

Example:

package main

import (
        "fmt"
        "hash/fnv"
)

func hash(s string) uint32 {
        h := fnv.New32a()
        h.Write([]byte(s))
        return h.Sum32()
}

func main() {
        fmt.Println(hash("HelloWorld"))
        fmt.Println(hash("HelloWorld."))
}

(Also here)


Output:

926844193
107706013
查看更多
登录 后发表回答