A cyclic redundancy check (CRC) is a fixed-length value calculated from data to help detect accidental corruption. The sender includes the value with the data; the receiver applies the matching CRC procedure and checks whether the result agrees. A CRC can reveal many transmission or storage errors, but it is not a cryptographic safeguard or proof of who created the data.
What a cyclic redundancy check does
A CRC is an error-detection code. It gives a message or data block a compact check value, often called check bits or a CRC value. When the data reaches its destination—or is read back from storage—the receiving system can calculate the check again and compare the result. A mismatch indicates that the data or check value changed.
As an Amazon Associate I earn from qualifying purchases.
NIST defines CRC as a checksum algorithm for situations where accidental changes are expected, and distinguishes it from a cryptographic hash. NIST’s CRC glossary entry provides the definition.
How CRC calculation works
CRC mathematics treats a sequence of bits as a polynomial whose coefficients are binary values. The calculation divides a message-derived polynomial by an agreed generator polynomial. The remainder supplies the check bits. The receiver uses the corresponding procedure to verify the data. The arithmetic is performed over GF(2), where addition and subtraction reduce to XOR operations.
#1 Best Overall
This polynomial description explains the principle; practical implementations also specify conventions such as bit ordering and initialization or finalization rules. Those details matter because the sender and receiver must use compatible procedures. RFC 3385 describes CRC generator polynomials and receiver comparison, while RFC 9260 explains polynomial division for CRC-32C in SCTP.
Why CRC rules must match
Calling a value “CRC-32” or “CRC-32C” does not, by itself, establish every setting needed for interoperability. A correct implementation must follow the protocol or standard in use, including its polynomial, check width, bit ordering, initialization, and finalization conventions. If endpoints apply different rules, they can calculate different values for unchanged data.
Rank #2
For example, RFC 9260 specifies CRC-32C for the Stream Control Transmission Protocol (SCTP). It gives the generator polynomial as 0x11EDC6F41, equivalent to x^32 + x^28 + x^27 + x^26 + x^25 + x^23 + x^22 + x^20 + x^19 + x^18 + x^14 + x^13 + x^11 + x^10 + x^9 + x^8 + x^6 + x^0, and addresses reflected bit ordering in the SCTP calculation. This is an example of a protocol-specific choice, not a universal setting for all CRC uses.
What a CRC can—and cannot—tell you
- It can help detect accidental corruption. A failed comparison signals that data or its check value differs from what the procedure expects.
- It does not catch every conceivable error. Whether a particular corruption goes undetected depends on the selected polynomial and the pattern or distribution of errors. RFC 3385 discusses this dependence; a single general-purpose undetected-error percentage would therefore be misleading.
- It does not authenticate data. A CRC is not a cryptographic hash, and it does not prove who produced the data. An attacker who can alter data can also calculate a replacement CRC, so a CRC should not be relied on to prevent deliberate tampering.
How to choose or interpret a CRC
When implementing or troubleshooting a CRC, use the specification for the relevant protocol or file format rather than selecting a variant by width alone. Confirm the polynomial, width, bit ordering, initialization and finalization rules, and any stated message-length or error assumptions. Polynomial choice affects error-detection performance, so a CRC appropriate for one protocol or error model is not automatically suitable for another. RFC 3385 discusses these performance considerations in its CRC and checksum considerations.
Quick Recap
Best Value
Rank #4
Rank #3
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




