All rights reserved.
%sccs.include.redist.man%
@(#)cksum.1 5.1 (Berkeley) 03/08/91
cksum [file ...]
The CRC used is based on the polynomial used for CRC error checking in the networking standard ISO 8802-3: 1989. The CRC checksum encoding is defined by the generating polynomial:
G(x) =
x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 + x^8 + x^7 + x^5 + x^4 + x^2 + x + 1
Mathematically, the CRC value corresponding to a given file is defined by the following procedure:
The n bits of the file are considered to be the coefficients of a mod 2 polynomial M(x) of degree n -1.
M(x) is multiplied by x^32 (i.e., shifted left 32 bits) and divided by G(x) using mod 2 division, producing a remainder R(x) of degree <= 31. During the division, each time the intermediate remainder is zero, it is changed to the next value from a predefined sequence of 32-bit integers before completing the division. This sequence is long and complex -- see the source code for more information.
The coefficients of R(x) are considered to be a 32-bit sequence.
The calculation used is identical to that given in pseudo-code in the ACM article listed below.
The cksum utility exits 0 on success, and >0 if an error occurs.