CRC方法无法检测到哪种错误?

时间:2018-09-16 19:40:47

标签: crc

让我们假设16位CRC多项式x 1 + x 12 + x + 1 = 0x11021。该多项式可以:

  1. 检测所有单位错误(与数据大小无关)。
  2. 检测所有突发错误,最高16位宽(与数据大小无关)。
  3. 检测所有奇数个误码(因为它具有4个多项式项;数据  大小无关)。
  4. 检测3位错误(HD4),最大数据量为32571位。

考虑到以上几点是对的…… CRC无法检测到哪种错误?

1 个答案:

答案 0 :(得分:1)

  1. 那应该可以检测所有高达16位的单个突发错误。

  2. 0x11021是2个“素数”多项式0xf01f和0x3的乘积。 0x3因子是检测到所有奇数位错误的原因(它是奇偶校验因子)。

  3. 由于检测到所有奇数位错误,因此该语句将检测所有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