User:Xiong/crc

Source: Wikipedia, the free encyclopedia.

Common polynomials

  • 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-
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 (
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. 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.
    ISSN 0272-1732.{{cite journal}}: CS1 maint: date and year (link
    )