Cyclic Redundancy Check (CRC) - Computerphile

ComputerphileComputerphile
Education3 min read13 min video
Feb 25, 2026|32,563 views|1,508|120
Save to Pod

Key Moments

TL;DR

CRC detects errors in data transmission using polynomial division for robust error checking.

Key Insights

1

Cyclic Redundancy Check (CRC) is a robust method for detecting errors in data transmission, building upon simpler checksums.

2

Unlike simple checksums that sum byte values, CRC treats data as a polynomial and uses division (in a Galois Field) to calculate a remainder.

3

This polynomial division, specifically using a generator polynomial, makes CRC more effective at catching common error types like bit flips.

4

CRC calculations are computationally efficient and can be implemented with simple hardware like linear feedback shift registers (LFSRs), suitable for high-speed networks.

5

CRCs are essential for reliable data transfer, used in technologies like Ethernet and historically in cassette tape data loading.

6

While not cryptographically secure, CRC provides a strong guarantee against accidental data corruption.

THE NEED FOR ERROR DETECTION

In computer communication, ensuring data integrity is crucial. While previous methods like DC balance or simpler checksums offer some error detection, they are not always sufficient. Errors can occur due to noise or imperfect transmission. A robust error-checking mechanism is needed to identify corrupted data packets so they can be discarded or retransmitted, ensuring reliable communication across various media like copper, fiber, or Wi-Fi.

LIMITATIONS OF SIMPLE CHECKSUMS

Early error detection methods, like simple checksums, involved summing the values of bytes in a message and storing the result. However, these methods are vulnerable to certain common errors. For instance, if one bit is flipped (adding a value) and another bit is cleared (subtracting the same value), the final sum might remain unchanged, leading to undetected errors. This makes simple checksums inadequate for ensuring high data integrity.

CRC AS A MORE ROBUST SOLUTION

Cyclic Redundancy Check (CRC) offers a more sophisticated approach by treating the data as a giant polynomial, not just a series of bytes. This message polynomial is then divided by a specific 'generator polynomial' with special properties. The remainder of this division forms the CRC value. This method is significantly more effective at detecting common transmission errors compared to simple additive checksums.

THE MECHANICS OF CRC CALCULATION

CRC calculation involves polynomial division, performed in a mathematical structure called Galois Field 2, where only binary values (0 and 1) are used, and addition/subtraction are equivalent to the XOR operation. The process treats the entire message as a sequence of bits representing a large polynomial. This polynomial is divided by a generator polynomial, and the resulting remainder, typically small in bit length, is appended to the message.

EFFICIENCY AND IMPLEMENTATION OF CRC

Despite its mathematical complexity when explained with long division, CRC is remarkably efficient to implement in hardware. It can be realized using simple circuits like linear feedback shift registers (LFSRs). This efficiency allows CRC checks to be performed in real-time as data streams through network hardware like Ethernet switches or network cards, updating the remainder continuously until the packet end.

PRACTICAL APPLICATIONS OF CRC

CRCs are widely used in modern data transmission and storage. Historically, they were used for loading data from noisy media like cassette tapes. Today, they are integral to protocols like Ethernet, ensuring that packets transmitted over networks are received without corruption. The generator polynomials are chosen to optimize detection of likely error patterns, making CRC a reliable, albeit not cryptographically secure, method for data integrity.

Common Questions

A Cyclic Redundancy Check (CRC) is an error-detecting code commonly used in digital networks and storage devices to detect accidental changes to raw data. It works by treating the data as a large number and performing a polynomial division to generate a remainder, which is then appended to the data.

Topics

Mentioned in this video

More from Computerphile

View all 82 summaries

Found this useful? Build your knowledge library

Get AI-powered summaries of any YouTube video, podcast, or article in seconds. Save them to your personal pods and access them anytime.

Try Summify free