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)
- ^ 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) - ^
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)