CRC-32C (Castagnoli) Checksum

Compute CRC-32C for iSCSI, SCTP, and NVMe integrity checks

Ad placeholder (leaderboard)

What CRC-32C is

CRC-32C is a 32-bit cyclic redundancy check based on the Castagnoli polynomial, chosen for storage and network protocols because it has strong error-detection properties and can be computed in hardware.

How it works

The CRC register is initialised to 0xFFFFFFFF. Each input byte is XORed into the low byte of the register, then the register is shifted right eight times; each time a 1 bit is shifted out, the reflected polynomial 0x82F63B78 (the bit-reversal of 0x1EDC6F41) is XORed back in. After the final byte, the register is XORed with 0xFFFFFFFF to produce the result. Because both input and output are reflected, the whole computation runs least-significant-bit first.

This calculator precomputes a 256-entry table from the polynomial and folds one byte at a time through it — the same byte-slicing approach the Linux kernel and Intel’s CRC libraries use.

Example and notes

The standard test vector 123456789 yields 0xE3069283; matching this value is the quickest way to confirm a CRC-32C implementation. Switch to Hex bytes to checksum binary data such as a disk block or a network segment payload.

Do not confuse CRC-32C with the more common CRC-32 used by zlib, gzip, and PNG — they share the name “CRC-32” but use different polynomials and will never agree on the same input. CRC-32C protects only against accidental corruption and is not a security primitive.

Ad placeholder (rectangle)