A cyclic redundancy check (CRC) is an error detection mechanism that relies on the repeated application of binary polynomial transformations to determine a remainder, or residue. Similar calculations performed on each end of a data transmission should reveal if bit errors occurred in transit.
CRC techniques are somewhat similar to hash functions, in so far as larger data blocks are mathematically reduced to outputs in a one-way fashion. From a cryptographic standpoint, however, CRCs are relatively weaker than most common hashes and are relatively easy to spoof. For this reason, CRC is best reserved for error detection only (by such protocols as Ethernet), for which purpose it is relatively robust. For error detection in a generally trusted environment, CRC compares favorably with alternatives such as checksum or parity.