Функция fnv.New128a
Функция fnv.New128a из пакета crypto/fnv
возвращает новый объект, реализующий интерфейс hash.Hash
для вычисления 128-битной хеш-суммы по алгоритму FNV-1a.
Этот алгоритм отличается от стандартного FNV-1 тем,
что операция XOR выполняется до умножения, что дает
лучшее распределение хешей. Функция не принимает
никаких параметров и всегда возвращает новый экземпляр
хеша с начальным состоянием.
Синтаксис
fnv.New128a()
Пример
Давайте вычислим хеш для строки "hello world":
package main
import (
"crypto/fnv"
"fmt"
)
func main() {
h := fnv.New128a()
h.Write([]byte("hello world"))
res := h.Sum(nil)
fmt.Printf("%x", res)
}
Результат выполнения кода:
"779a65e7023cdb7c3fc39c2b6c3b4f60"
Пример
Вычислим хеш для строки "12345" и выведем его в виде слайса байт:
package main
import (
"crypto/fnv"
"fmt"
)
func main() {
h := fnv.New128a()
h.Write([]byte("12345"))
res := h.Sum(nil)
fmt.Println(res)
}
Результат выполнения кода:
"[0 0 0 0 0 0 0 0 24 48 177 91 215 42 131 60]"
Пример
Используем метод Sum для получения хеша
в виде 16-байтового слайса без изменения состояния:
package main
import (
"crypto/fnv"
"fmt"
)
func main() {
h := fnv.New128a()
h.Write([]byte("abcde"))
res := h.Sum(make([]byte, 0, 16))
fmt.Printf("%x", res)
}
Результат выполнения кода:
"5372dc3b7fecbcff3649a01f41d06b3d"
Смотрите также
-
функцию
fnv.New128,
которая создает хеш FNV-1 на 128 бит -
функцию
fnv.New32a,
которая создает 32-битный хеш FNV-1a -
функцию
fnv.New64a,
которая создает 64-битный хеш FNV-1a -
интерфейс
hash.Hash,
который реализует возвращаемый объект