Функция fnv.New32a

Функция fnv.New32a создает новый объект хеша FNV-1a с размером 32 бита. Этот алгоритм является улучшенной версией FNV-1, которая использует другой порядок операций XOR и умножения. Возвращаемый объект реализует интерфейс hash.Hash32, что позволяет использовать его в стандартных операциях хеширования. Функция не принимает никаких параметров.

Синтаксис

gofnv.New32a()

Пример

Давайте создадим хеш FNV-1a и вычислим его для строки 'abcde':

gopackage main

import (
  "fmt"
  "hash/fnv"
)

func main() {
  h := fnv.New32a()
  h.Write([]byte("abcde"))
  res := h.Sum32()
  fmt.Println(res)
}

Результат выполнения кода:

go1336283818

Пример

Давайте создадим хеш FNV-1a и вычислим его для строки '12345':

gopackage main

import (
  "fmt"
  "hash/fnv"
)

func main() {
  h := fnv.New32a()
  h.Write([]byte("12345"))
  res := h.Sum32()
  fmt.Println(res)
}

Результат выполнения кода:

go2012506137

Пример

Давайте покажем отличие FNV-1a от FNV-1 на примере строки 'abcde':

gopackage main

import (
  "fmt"
  "hash/fnv"
)

func main() {
  // FNV-1
  h1 := fnv.New32()
  h1.Write([]byte("abcde"))
  res1 := h1.Sum32()
  fmt.Println("FNV-1:", res1)

  // FNV-1a
  h2 := fnv.New32a()
  h2.Write([]byte("abcde"))
  res2 := h2.Sum32()
  fmt.Println("FNV-1a:", res2)
}

Результат выполнения кода:

go"FNV-1: 3870053955"
"FNV-1a: 1336283818"

Смотрите также

  • функцию fnv.New32,
    которая создает хеш FNV-1 32 бита
  • функцию fnv.New64,
    которая создает хеш FNV-1 64 бита
  • функцию fnv.New64a,
    которая создает хеш FNV-1a 64 бита
  • интерфейс hash.Hash,
    который реализует возвращаемый объект