Mathematics of cyclic redundancy checks

The cyclic redundancy check (CRC) is a check of the remainder after division in the ring of polynomials over GF(2) (the finite field of integers modulo 2). That is, the set of polynomials where each coefficient is either zero or one, and arithmetic operations wrap around.

Any string of bits can be interpreted as the coefficients of a polynomial of this sort, and a message has a valid CRC if it divisible by (i.e. is a multiple of) an agreed-on generator polynomial. CRCs are convenient and popular because they have good error-detection properties and such a multiple may be easily constructed from any message polynomial by appending an -bit remainder polynomial to produce , where is the degree of the generator polynomial.

Although the separation of into the message part and the checksum part is convenient for use of CRCs, the error-detection properties do not make a distinction; errors are detected equally anywhere within .