Common polynomials

edit
  • As well as the polynomial, the prefix and the value exclusive-ORed with the remainder are important for some more complicated checksums (like most forms of CRC-32 and CRC-64).
  • CRCs less than CRC-16 do not tend to use Initial or final XOR values.
  • Very often custom versions of checksums are created by changing these values, as it does not alter the overall mechanics (or math) of the checksum algorithm -- and may provide some nominal security features. However a CRC algorithm can be reverse-engineered from a small number of message-CRC pairs by brute force search.

Note: in this table the high-order bit is omitted; see Specifying a CRC above.

Name Polynomial Representations: Normal or Reverse (Normal of Reciprocal)
CRC-1   (most hardware; also known as parity bit) 0x1 or 0x1 (0x1)
CRC-4-ITU   (ITU G.704, p. 12) 0x3 or 0xC (0x9)
CRC-5-ITU   (ITU G.704, p. 9) 0x15 or 0x15 (0x0B)
CRC-5-USB   (USB token packets) 0x05 or 0x14 (0x9)
CRC-6-ITU   (ITU G.704, p. 3) 0x03 or 0x30 (0x21)
CRC-7   (telecom systems, MMC) 0x09 or 0x48 (0x11)
CRC-8-ATM   (ATM HEC) 0x07 or 0xE0 (0xC1)
CRC-8-CCITT   (1-Wire bus) 0x8D or 0xB1 (0x63)
CRC-8-Dallas/Maxim   (1-Wire bus) 0x31 or 0x8C (0x19)
CRC-8   0xD5 or 0xAB (0x57)
CRC-8-SAE J1850   0x1D or 0xB8 (0x71)
CRC-10   0x233 or 0x331 (0x263)
CRC-11   (FlexRay) 0x385 or 0x50E (0x21D)
CRC-12   (telecom systems, [1][2] ) 0x80F or 0xF01 (0xE03)
CRC-15-CAN   0x4599 or 0x4CD1 (0x19A3)
CRC-16-Fletcher Not a CRC; see Fletcher's checksum Used in Adler-32 A & B CRCs
CRC-16-CCITT   (X.25, V.41, CDMA, Bluetooth, PPP, IrDA, BACnet; known as CRC-CCITT) 0x1021 or 0x8408 (0x0811)
CRC-16-IBM   (SDLC, XMODEM, USB, many others; also known as CRC-16) 0x8005 or 0xA001 (0x4003)
CRC-24-Radix-64   (FlexRay) 0x864CFB or 0xDF3261 (0xBE64C3)
CRC-30   (CDMA) 0x2030B9C7 or 0x38E74301 (0x31CE8603)
CRC-32-Adler Not a CRC; see Adler-32 See Adler-32
CRC-32-IEEE 802.3   (V.42, MPEG-2) 0x04C11DB7 or 0xEDB88320 (0xDB710641)
CRC-32C (Castagnoli)   0x1EDC6F41 or 0x82F63B78 (0x05EC76F1)
CRC-32K (Koopman)   0x741B8CD7 or 0xEB31D82E (0xD663B05D)
CRC-64-ISO   (HDLC — ISO 3309) 0x000000000000001B or 0xD800000000000000 (0xB000000000000001)
CRC-64-ECMA-182     (as described in ECMA-182 p.63) 0x42F0E1EBA9EA3693 or 0xC96C5795D7870F42 (0x92D8AF2BAF0E1E85)

Known to exist, but technologically defunct -- mainly replaced by cryptographic hash functions

  • CRC-128 (IEEE)
  • CRC-256 (IEEE)
  1. ^ Perez, Aram (1983). "Byte-Wise CRC Calculations". IEEE Micro. 3 (3): 40–50. doi:10.1109/MM.1983.291120. ISSN 0272-1732.{{cite journal}}: CS1 maint: date and year (link)
  2. ^ Ramabadran, T.V.; Gaitonde, S.S. (1988). "A tutorial on CRC computations". IEEE Micro. 8 (4): 62–75. doi:10.1109/40.7773. ISSN 0272-1732.{{cite journal}}: CS1 maint: date and year (link)