Question

Does anyone know of some CRC test vectors for CRC16-CCITT?

I do not have a CRC implementation I can trust and either need to test someone's implementation or my own. (For CRC32, I use the PNG code as the gold standard, as it's a reputable reference implementation.)

(this site's CRC calculator looks useful but I need to verify correctness somehow)


UPDATE: The above CRC calculator looks useful but it takes only ascii, no way to enter hex. --- it's very awkward to enter hex input, though. (ASCII 12 in hex can be entered as %31%32, so you can't just copy+paste a long string of hexadecimal bytes; also the % character doesn't seem to have an escape)

I have verified this online calculator, which takes hex inputs, against the Boost test vectors for CRC16, CRC16-CCITT, and CRC32.

Was it helpful?

Solution

Boost has a nice CRC implementation you can test against. As far as I know it's possible to configure it for CRC16. http://www.boost.org/doc/libs/1_41_0/libs/crc/index.html

There seems to be an example of how to set it up to simulate CCITT on this page: http://www.boost.org/doc/libs/1_41_0/libs/crc/crc.html

OTHER TIPS

Here are two test vectors for CCITT-16 CRC (whose polynomial is X16 + X12 + X5 + 1 (0x1021 in big-endian hex representation); initial CRC value is 0xFFFF. XOR value out is zero.) are:

0x12345670 = 0xB1E4

0x5A261977 = 0x1AAD

I've found this one:

http://introcs.cs.princeton.edu/java/51data/CRC16CCITT.java.html

"123456789".getBytes("ASCII"); -> 0x29b1
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top