The CRC-32 (Cyclic Redundancy Check, 32-bit) is a fast checksum used to detect accidental data corruption. This tool encodes your text as UTF-8 and computes the IEEE 802.3 CRC-32 over those bytes, the same checksum used by zlib, gzip, PNG, ZIP, and Ethernet frames.
How it works
CRC-32 treats the input bytes as the coefficients of a large binary polynomial and divides it (modulo 2) by a fixed generator polynomial, keeping the remainder. The implementation here uses the table-driven reflected method:
crc = 0xFFFFFFFF
for each byte b:
crc = TABLE[(crc ^ b) & 0xFF] ^ (crc >>> 8)
result = crc ^ 0xFFFFFFFF
TABLE is a 256-entry lookup precomputed from the reflected polynomial
0xEDB88320. The initial value 0xFFFFFFFF and the final XOR with
0xFFFFFFFF are part of the standard IEEE variant, which is why an empty input
yields 00000000 and the classic test phrase yields a well-known value.
Tips and notes
- The well-known test vector
"The quick brown fox jumps over the lazy dog"produces the CRC-32414fa339. - CRC-32 is for integrity, not security. A bit-flip in transit is reliably detected, but anyone can craft a different message with the same checksum.
- If you need CRC-32C (used by iSCSI, ext4, and many storage systems), note it uses a different polynomial and will not match the value here.
- Encoding matters: the same visible string in UTF-8 versus UTF-16 produces different bytes and therefore a different checksum.