Функция crc32.ChecksumIEEE

Функция crc32.ChecksumIEEE вычисляет контрольную сумму CRC-32 для переданных данных. Алгоритм основан на полиноме IEEE (0xEDB88320), который широко применяется в сетевых протоколах и форматах файлов. В первый параметр передается срез байтов []byte, для которого рассчитывается контрольная сумма. Функция возвращает значение типа uint32 — 32-битное число, представляющее контрольную сумму.

Синтаксис

gocrc32.ChecksumIEEE(data []byte) uint32

Пример

Давайте вычислим контрольную сумму для строки "hello":

gopackage main

import (
  "fmt"
  "hash/crc32"
)

func main() {
  data := []byte("hello")
  res := crc32.ChecksumIEEE(data)
  fmt.Println(res)
}

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

go907060870

Пример

Рассчитаем контрольную сумму для пустого среза байтов:

gopackage main

import (
  "fmt"
  "hash/crc32"
)

func main() {
  data := []byte{}
  res := crc32.ChecksumIEEE(data)
  fmt.Println(res)
}

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

go0

Пример

Сравним контрольные суммы для разных данных. Даже небольшое изменение приводит к совершенно другому результату:

gopackage main

import (
  "fmt"
  "hash/crc32"
)

func main() {
  data1 := []byte("hello")
  data2 := []byte("world")
  res1 := crc32.ChecksumIEEE(data1)
  res2 := crc32.ChecksumIEEE(data2)
  fmt.Println(res1, res2)
}

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

go907060870 2291510195

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

  • функцию crc32.Checksum,
    которая вычисляет CRC-32 с произвольным полиномом
  • функцию crc32.NewIEEE,
    которая создает хеш для поточного вычисления CRC-32 IEEE
  • функцию adler32.Checksum,
    которая вычисляет контрольную сумму Adler-32
  • функцию crc64.Checksum,
    которая вычисляет контрольную сумму CRC-64