Функция crc32.New
Функция crc32.New создает новый хеш для вычисления контрольной суммы CRC-32.
В отличие от crc32.NewIEEE, эта функция принимает в качестве аргумента
таблицу полинома, что позволяет использовать различные варианты CRC-32.
Если передать nil, будет использована стандартная таблица IEEE.
Функция возвращает интерфейс hash.Hash32, который реализует методы
Write для добавления данных и Sum32 для получения
32-битной контрольной суммы.
Синтаксис
crc32.New(tab *crc32.Table) hash.Hash32
Пример с таблицей IEEE
Давайте создадим хеш со стандартной таблицей IEEE и вычислим
контрольную сумму для строки "abcde":
package main
import (
"fmt"
"hash/crc32"
)
func main() {
// Create a new CRC-32 hash with IEEE table
h := crc32.New(crc32.IEEETable)
// Write data to the hash
h.Write([]byte("abcde"))
// Get the checksum
res := h.Sum32()
fmt.Println(res)
}
Результат выполнения кода:
1585201610
Пример с таблицей Castagnoli
Давайте создадим хеш с таблицей Castagnoli и вычислим
контрольную сумму для строки "abcde":
package main
import (
"fmt"
"hash/crc32"
)
func main() {
// Create a new CRC-32 hash with Castagnoli table
h := crc32.New(crc32.MakeTable(crc32.Castagnoli))
// Write data to the hash
h.Write([]byte("abcde"))
// Get the checksum
res := h.Sum32()
fmt.Println(res)
}
Результат выполнения кода:
4006049583
Пример с nil таблицей
Давайте передадим nil в качестве аргумента и убедимся,
что будет использована таблица IEEE:
package main
import (
"fmt"
"hash/crc32"
)
func main() {
// Create a new CRC-32 hash with nil (will use IEEE table)
h := crc32.New(nil)
// Write data to the hash
h.Write([]byte("abcde"))
// Get the checksum
res := h.Sum32()
fmt.Println(res)
}
Результат выполнения кода:
1585201610
Пример пошагового обновления
Давайте добавим данные частями и получим итоговую контрольную сумму:
package main
import (
"fmt"
"hash/crc32"
)
func main() {
// Create a new CRC-32 hash
h := crc32.New(crc32.IEEETable)
// Write data in parts
h.Write([]byte("ab"))
h.Write([]byte("cd"))
h.Write([]byte("e"))
// Get the final checksum
res := h.Sum32()
fmt.Println(res)
}
Результат выполнения кода:
1585201610
Смотрите также
-
функцию
crc32.Checksum,
которая вычисляет контрольную сумму CRC-32 для слайса байт -
функцию
crc32.ChecksumIEEE,
которая вычисляет контрольную сумму CRC-32 IEEE для слайса байт -
функцию
crc32.NewIEEE,
которая создает хеш CRC-32 IEEE без указания таблицы -
функцию
hash.Hash32,
которая описывает интерфейс для 32-битных хеш-функций