让我们假设16位CRC多项式x 1 + x 12 + x + 1 = 0x11021。该多项式可以:
考虑到以上几点是对的…… CRC无法检测到哪种错误?
答案 0 :(得分:1)
那应该可以检测所有高达16位的单个突发错误。
0x11021是2个“素数”多项式0xf01f和0x3的乘积。 0x3因子是检测到所有奇数位错误的原因(它是奇偶校验因子)。
由于检测到所有奇数位错误,因此该语句将检测所有2位错误,直到数据大小为32751位或消息大小为32767位,其中包括附加到16位CRC的数据。数据位。对于暴力破解方法,使用除第一个位(一个位)之外的所有零位的位串,然后对该字符串计算CRC,直到CRC只有一个位作为最高有效位为止。可以通过从0x8000的CRC开始并对其进行循环直到再次循环回到0x8000(这将花费32767个周期)来进行仿真。因此,如果[0]位和[32768]位== 1(所有其他位== 0),则计算出的CRC将为零,这将无法检测到2个错误位。
CRC无法检测到哪种错误?
多个突发错误,其中突发的总距离超过16位,本质上是单个突发错误,其长度超过16位。
将无法检测到4个或更多随机分布的位错误的某些模式。如下表所示,未检测到错误的可能性很低。随着误码数量的增加,故障率也会增加,但是除非您有很多误码,否则故障率仍然很低。随机的位模式会在大约1/65536的时间内通过CRC16检查,但这在正常的消息发送/接收序列中是不常见的。
48 bit data, 16 bit crc, => 64 bit message
2^64 - 1 possible error patterns
84 of 635376 possible patterns of 4 error bits fail
2430 of 74974368 possible patterns of 6 error bits fail
133001 of 4426165368 possible patterns of 8 error bits fail
4621021 of 151473214816 possible patterns of 10 error bits fail
100246083 of 3284214703056 possible patterns of 12 error bits fail