Package crc32 implements the 32-bit cyclic redundancy check, or CRC-32, checksum. See http://en.wikipedia.org/wiki/Cyclic_redundancy_check for information.
Polynomials are represented in LSB-first form also known as reversed representation.
Internal call graph ▹
Internal call graph ▾
In the call graph viewer below, each node is a function belonging to this package and its children are the functions it calls—perhaps dynamically.
The root nodes are the entry points of the package: functions that may be called from outside the package. There may be non-exported or anonymous functions among them if they are called dynamically from another package.
Click a node to visit that function's source code.
From there you can visit its callers by
clicking its declaring
Functions may be omitted if they were determined to be unreachable in the particular programs or tests that were analyzed.
const ( // IEEE is by far and away the most common CRC-32 polynomial. // Used by ethernet (IEEE 802.3), v.42, fddi, gzip, zip, png, ... IEEE = 0xedb88320 // Castagnoli's polynomial, used in iSCSI. // Has better error detection characteristics than IEEE. // http://dx.doi.org/10.1109/26.231911 Castagnoli = 0x82f63b78 // Koopman's polynomial. // Also has better error detection characteristics than IEEE. // http://dx.doi.org/10.1109/DSN.2002.1028931 Koopman = 0xeb31d82e )
The size of a CRC-32 checksum in bytes.
const Size = 4
IEEETable is the table for the IEEE polynomial.
var IEEETable = simpleMakeTable(IEEE)
func Checksum(data byte, tab *Table) uint32
Checksum returns the CRC-32 checksum of data using the polynomial represented by the Table.
func ChecksumIEEE ¶
func ChecksumIEEE(data byte) uint32
ChecksumIEEE returns the CRC-32 checksum of data using the IEEE polynomial.
func New(tab *Table) hash.Hash32
New creates a new hash.Hash32 computing the CRC-32 checksum using the polynomial represented by the Table. Its Sum method will lay the value out in big-endian byte order.
func NewIEEE() hash.Hash32
NewIEEE creates a new hash.Hash32 computing the CRC-32 checksum using the IEEE polynomial. Its Sum method will lay the value out in big-endian byte order.
func Update(crc uint32, tab *Table, p byte) uint32
Update returns the result of adding the bytes in p to the crc.
Table is a 256-word table representing the polynomial for efficient processing.
type Table uint32
func MakeTable(poly uint32) *Table
MakeTable returns a Table constructed from the specified polynomial. The contents of this Table must not be modified.
// In this package, the CRC polynomial is represented in reversed notation, // or LSB-first representation. // // LSB-first representation is a hexadecimal number with n bits, in which the // most significant bit represents the coefficient of x⁰ and the least significant // bit represents the coefficient of xⁿ⁻¹ (the coefficient for xⁿ is implicit). // // For example, CRC32-Q, as defined by the following polynomial, // x³²+ x³¹+ x²⁴+ x²²+ x¹⁶+ x¹⁴+ x⁸+ x⁷+ x⁵+ x³+ x¹+ x⁰ // has the reversed notation 0b11010101100000101000001010000001, so the value // that should be passed to MakeTable is 0xD5828281. crc32q := crc32.MakeTable(0xD5828281) fmt.Printf("%08x\n", crc32.Checksum(byte("Hello world"), crc32q))