1

I'm trying to learn CRCs. Yet- I have no clue what a CRC16/CCITT_FALSE standard is. Can anyone help or send some resources that can explain the difference between CRC-16-CCITT and CRC16/CCITT FALSE is?

artless noise
  • 21,212
  • 6
  • 68
  • 105

1 Answers1

1

They differ in their CRC parameters. You can find CRC-16/IBM-3740 (often falsely identified as CCITT CRC-16) and CRC-16/KERMIT (the correct CCITT CRC-16) in Greg Cook's catalogue. Here are their parameters:

width=16 poly=0x1021 init=0xffff refin=false refout=false xorout=0x0000 check=0x29b1 residue=0x0000 name="CRC-16/IBM-3740"
width=16 poly=0x1021 init=0x0000 refin=true refout=true xorout=0x0000 check=0x2189 residue=0x0000 name="CRC-16/KERMIT"

They use the same polynomial, but one is reflected and the other not, and one of them has a non-zero initial value.

Mark Adler
  • 101,978
  • 13
  • 118
  • 158
  • Thank you for your response. Within the CCITT false, why is there a debate about the check being 0x29b1 and 0xE5CC for the character string 123456789? – FoundedSwag May 05 '23 at 19:37
  • 1
    I have no idea what "debate" you are referring to. You can search for that check value on that page and find yet another CRC: [`CRC-16/SPI-FUJITSU`](https://reveng.sourceforge.io/crc-catalogue/16.htm#crc.cat.crc-16-spi-fujitsu). – Mark Adler May 05 '23 at 19:56
  • Again, very grateful for your response, Dr. Adler. – FoundedSwag May 05 '23 at 20:19