Функция crc64.Checksum

Функция crc64.Checksum вычисляет 64-битную контрольную сумму CRC-64 для переданных данных. В первый параметр мы передаем срез байтов []byte, для которого необходимо вычислить контрольную сумму, во второй параметр мы передаем таблицу полинома crc64.Table, которая определяет используемый алгоритм вычисления. Функция возвращает значение типа uint64 — 64-битную контрольную сумму.

Синтаксис

gocrc64.Checksum(data []byte, tab *crc64.Table) uint64

Пример

Давайте вычислим контрольную сумму CRC64 для строки "abcde", используя таблицу полинома ISO:

gopackage main

import (
  "crypto/crc64"
  "fmt"
)

func main() {
  data := []byte("abcde")
  tab := crc64.MakeTable(crc64.ISO)
  res := crc64.Checksum(data, tab)
  fmt.Println(res)
}

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

go15042360528974577775

Пример

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

gopackage main

import (
  "crypto/crc64"
  "fmt"
)

func main() {
  data := []byte{}
  tab := crc64.MakeTable(crc64.ECMA)
  res := crc64.Checksum(data, tab)
  fmt.Println(res)
}

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

go0

Пример

Давайте вычислим контрольную сумму CRC64 для одной и той же строки с разными полиномами и сравним результаты:

gopackage main

import (
  "crypto/crc64"
  "fmt"
)

func main() {
  data := []byte("12345")
  tabISO := crc64.MakeTable(crc64.ISO)
  tabECMA := crc64.MakeTable(crc64.ECMA)

  sumISO := crc64.Checksum(data, tabISO)
  sumECMA := crc64.Checksum(data, tabECMA)

  fmt.Println("ISO:", sumISO)
  fmt.Println("ECMA:", sumECMA)
}

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

go"ISO: 10167293053543445188"
"ECMA: 14846868478967793242"

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

  • функцию crc64.New,
    которая создает новый хеш-объект для вычисления CRC64
  • функцию crc32.Checksum,
    которая вычисляет 32-битную контрольную сумму CRC32
  • функцию md5.Sum,
    которая вычисляет хеш MD5 для данных
  • функцию sha256.Sum256,
    которая вычисляет хеш SHA-256 для данных