Подтвердить что ты не робот

Как сгенерировать хэш-номер строки в Go?

Например:

hash("HelloWorld") = 1234567

Есть ли встроенная функция?

Спасибо.

4b9b3361

Ответ 1

Пакет hash полезен для этого. Обратите внимание, что это абстракция по конкретным реализациям хеширования. Некоторые готовые изделия находятся в пакете subdirectories.

Пример:

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

(Также здесь)


Вывод:

926844193
107706013

Ответ 2

Вот функция, которую вы можете использовать для генерации хэш-номера:

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

Я собрал группу этих хэш-функций полезности здесь: https://github.com/shomali11/util

Вы найдете FNV32, FNV32a, FNV64, FNV65a, MD5, SHA1, SHA256 и SHA512