Algorithm 犯3个错误,这样CRC算法将导致误报

Algorithm 犯3个错误,这样CRC算法将导致误报,algorithm,networking,crc,Algorithm,Networking,Crc,考虑生成器多项式100101和数据101110001。应用该算法,我们得到传输的消息:10111000100011 我需要在传输的消息(即位翻转)中产生接收方不会注意到的3错误。因此,CRC算法将无法注意到错误并错误地批准数据 怎么安排呢?试错法太乏味了 我发现对于101110010 10010(101110010b=5938d和10010b=18d)我们有5938=18 mod 37,然而,在这种情况下应用CRC算法是失败的。CRC算法可以被认为是通过将生成器模式左移一些位进行异或来减少消息

考虑生成器多项式
100101
和数据
101110001
。应用该算法,我们得到传输的消息:
10111000100011

我需要在传输的消息(即位翻转)中产生接收方不会注意到的
3
错误。因此,CRC算法将无法注意到错误并错误地批准数据

怎么安排呢?试错法太乏味了


我发现对于
101110010 10010
101110010b=5938d
10010b=18d
)我们有
5938=18 mod 37
,然而,在这种情况下应用CRC算法是失败的。

CRC算法可以被认为是通过将生成器模式左移一些位进行异或来减少消息

如果消息减少到0,则CRC测试通过

这意味着,如果将CRC左移一些位进行异或运算,CRC将保持不变。在您的例子中,生成器多项式只有3个设置位,这使得查找大量修改了3个位的消息变得很容易,只需切换位x、x+2、x+5即可选择x

例如,我们可以改变

101110011000100011 to 
001011011000100011

CRC算法可以被认为是通过将生成器模式左移一些位进行异或来减少消息

如果消息减少到0,则CRC测试通过

这意味着,如果将CRC左移一些位进行异或运算,CRC将保持不变。在您的例子中,生成器多项式只有3个设置位,这使得查找大量修改了3个位的消息变得很容易,只需切换位x、x+2、x+5即可选择x

例如,我们可以改变

101110011000100011 to 
001011011000100011

在286种可能的三种错误模式中,有11种CRC为零。它们是Peter de Rivaz指出的多项式的八个移位,第一个是
1001010000000
,这一模式的三个移位:
1000010000100
。该模式是移位多项式中三个的异或,即
1001010000000
000100010000
,和
0000010010100
,在286种可能的三种错误模式中,有11种CRC为零。它们是Peter de Rivaz指出的多项式的八个移位,第一个是
1001010000000
,这一模式的三个移位:
1000010000100
。该模式是三个移位多项式的异或,
1001010000000
000100010000
,和
0000010010100
“试错太繁琐了。”您可以随时编写应用程序来进行试错。算术模与GF(2)上的CRC计算无关。正如在另一条评论中提到的,只有13位消息,因此只有286个可能的3位错误模式可以尝试!只需编写一个程序,尝试所有这些,并报告其中有一个零CRC。(然后它们可以与任何13位消息进行异或运算,以获得不变的CRC。)“试错法太繁琐了。”您可以随时编写一个应用程序来为您进行试错。算术模数与GF(2)上的CRC计算无关。正如在另一条评论中提到的,只有13位消息,因此只有286个可能的3位错误模式可以尝试!只需编写一个程序,尝试所有这些,并报告其中有一个零CRC。(然后它们可以与任何13位消息异或,以产生不变的CRC。)CRC左移消息与
x,x+2,x+5
的切换有什么关系?
100101
在位位置5,2和0处有一个。这种移位,例如
100101000
在位置x、x+2和x+5处有一个移位,在这种情况下x是3。CRC左移位消息与
x、x+2、x+5
的切换有什么关系?
100101
在位位置5、2和0处有一个移位。该移位,例如
100101000
在位置x、x+2和x+5处有一个移位,在这种情况下,x是3。