Cyclic Redundancy Check
examination of the total data order to ensure that no errors occurred in copying
Cyclic redundancy check
A cyclic redundancy check (CRC) is a type of function that takes as input a data stream of any length and produces as output a value of a certain fixed size. The term CRC is often used to denote either the function or the function's output. A CRC can be used in the same way as a
checksum to detect accidental alteration of data during transmission or storage. CRCs are popular because they are simple to implement in binary
hardware, are easy to analyze mathematically, and are particularly good at detecting common errors caused by noise in transmission channels. The CRC was invented by
W. Wesley Peterson, and published in his 1961 paper.
See more at Wikipedia.org...
cyclic redundancy check
Noun
1. an error correction code that is recorded in each sector of a magnetic disk and used to catch errors in the data
(hypernym) error correction code, ECC
cyclic redundancy check (CRC)
An
error-
detection scheme that (a) uses
parity bits generated by polynomial encoding of
digital signals, (b) appends those parity bits to the
digital signal, and (c) uses decoding algorithms that detect errors in the received digital signal. Note: Error correction, if required, may be accomplished through the use of an automatic repeat-request (
ARQ)
system.
cyclic redundancy check
<
algorithm> (CRC or "cyclic redundancy code") A number derived from, and stored or transmitted with, a block of data in order to detect corruption. By recalculating the CRC and comparing it to the value originally transmitted, the receiver can detect some types of transmission errors.
A CRC is more complicated than a
checksum. It is calculated using division either using
shifts and
exclusive ORs or
table lookup (
modulo 256 or 65536).
The CRC is "redundant" in that it adds no information. A single corrupted
bit in the data will result in a one bit change in the calculated CRC but multiple corrupted bits may cancel each other out.
CRCs treat blocks of input bits as coefficient-sets for
polynomials. E.g., binary 10100000 implies the polynomial: 1*x^7 + 0*x^6 + 1*x^5 + 0*x^4 + 0*x^3 + 0*x^2 + 0*x^1 + 0*x^0. This is the "message polynomial". A second polynomial, with constant coefficients, is called the "generator polynomial". This is divided into the message polynomial, giving a quotient and remainder. The coefficients of the remainder form the bits of the final CRC. So, an order-33 generator polynomial is necessary to generate a 32-bit CRC. The exact bit-set used for the generator polynomial will naturally affect the CRC that is computed.
Most CRC implementations seem to operate 8 bits at a time by building a table of 256 entries, representing all 256 possible 8-bit byte combinations, and determining the effect that each byte will have. CRCs are then computed using an input byte to select a 16- or 32-bit value from the table. This value is then used to update the CRC.
Ethernet packets have a 32-bit CRC. Many disk formats include a CRC at some level.
(1997-08-02)
(c) Copyright 1993 by Denis Howe