web-dev-qa-db-fra.com

Comment générer le nombre de hachage d'une chaîne dans Go?

Par exemple:

hash("HelloWorld") = 1234567

Existe-t-il une fonction intégrée qui pourrait le faire?

Merci.

31
MrROY

Le paquet hash est utile pour cela. Notez que c'est une abstraction sur des implémentations de hachage spécifiques. Certains prêts à l'emploi se trouvent dans le paquet sous-répertoires .

Exemple:

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

(Aussi ici )


Production:

926844193
107706013
67
zzzz

Voici une fonction que vous pouvez utiliser pour générer un numéro de hachage:

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

J'ai rassemblé un groupe de ces fonctions de hachage utilitaires ici: https://github.com/shomali11/util

Tu trouveras FNV32, FNV32a, FNV64, FNV65a, MD5, SHA1, SHA256 et SHA512

2
Raed Shomali