5

有人知道CRC16-CCITT的一些 CRC 测试向量吗?

我没有可以信任的 CRC 实现,并且需要测试某人的实现或我自己的实现。(对于 CRC32,我使用PNG 代码作为黄金标准,因为它是一个有信誉的参考实现。)

这个网站的 CRC 计算器看起来很有用,但我需要以某种方式验证正确性)


更新:上面的 CRC 计算器看起来很有用,但它只需要 ascii,无法输入十六进制。--- 但是,输入十六进制输入非常尴尬。(十六进制的 ASCII12可以输入为%31%32,因此您不能只复制+粘贴一长串十六进制字节;而且该%字符似乎没有转义)

我已经针对 CRC16、CRC16-CCITT 和 CRC32 的 Boost 测试向量验证了这个采用十六进制输入的在线计算器。

4

4 回答 4

2

Boost 有一个很好的 CRC 实现,您可以对其进行测试。据我所知,可以为 CRC16 配置它。 http://www.boost.org/doc/libs/1_41_0/libs/crc/index.html

在此页面上似乎有一个如何设置它以模拟 CCITT 的示例:http: //www.boost.org/doc/libs/1_41_0/libs/crc/crc.html

于 2009-12-16T22:14:20.350 回答
1

Python 的binascii包使用 CRC-16 已经有一段时间了。

使用binascii.crc_hqx(val, 0xFFFF)- 前面的例子是......

$ python3
Python 3.7.3 (default, Dec 20 2019, 18:57:59) 
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import binascii
>>> tv = binascii.a2b_hex("12345670")
>>> hex(binascii.crc_hqx(tv, 0xFFFF))
'0xb1e4'
>>> tv = "123456789".encode("ascii")
>>> hex(binascii.crc_hqx(tv, 0xFFFF))
'0x29b1'
于 2020-03-13T09:32:36.527 回答
0

我找到了这个:

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

"123456789".getBytes("ASCII"); -> 0x29b1
于 2013-09-09T14:30:49.747 回答
0

这里有两个测试向量CCITT-16 CRC(其多项式为X16 + X12 + X5 + 1(0x1021 in big-endian hex 表示);初始 CRC 值为0xFFFF.XOR 值输出为零。)是:

0x12345670 = 0xB1E4

0x5A261977 = 0x1AAD
于 2012-10-10T21:21:11.457 回答