Cover V08, I01
Article
Listing 1
Listing 2
Listing 3
Sidebar 1

jan99.tar


Sidebar 1: What is a CRC?

The Cyclic Redundancy Check (CRC) is used to verify data transfers between a source and destination. While typically a telecommunication algorithm, any data transfer (large or small) is a candididate for a CRC.

A CRC is a computed integer reflecting the value of a set of data. The idea is to compute the CRC and send it at the source. The destination computes its own CRC and compares it to the CRC sent by the source. If there are no errors, the CRCs should be equal.

While a simple checksum also computes a value, the CRC incorprates the data position. Think of the data being transfered as a long string of bits. The bits become coefficients in a polynomial. The CRC is the remainder of the source polynomial by the generating polynomial. The generating polynomial is based on the length of the CRC; it is generally 16 bits long but can also be 32 bits.

For more in-depth information on CRC, refer to:

Practical Algorithms for Programmers by Andrew Binstock and John Rex. Addison-Wesley Publishing Company, 1996.

"Understanding CRCs" by Tim Kientzle. Dr. Dobb's Journal. April, 1997.