出现 3 个错误,因此 CRC 算法将导致误报
Make 3 errors so CRC algorithm will result false positive
考虑生成多项式 100101
和数据 1011100110001
。应用 CRC 算法,我们得到传输的消息:101110011000100011
我需要在接收方不会注意到的传输消息中出现 3
错误(即位翻转)。因此,CRC 算法将无法注意到错误并错误地批准数据。
这怎么安排?反复试验太乏味了。
我发现对于 1011100110010 10010
(1011100110010b = 5938d
和 10010b = 18d
)我们有 5938 = 18 mod 37
,但是在其上应用 CRC 算法时它失败了。
CRC 算法可以被认为是通过将生成器模式向左移动一些位进行异或来减少消息。
如果消息减少到 0,则 CRC 测试通过。
这意味着,如果您将 CRC 左移一些位进行 XOR,则 CRC 将保持不变。在您的情况下,生成多项式只有 3 个设置位,这使得很容易找到很多修改了 3 位的消息,只需切换位 x、x+2、x+5 即可选择任何 x。
例如我们可以改变
101110011000100011 to
001011011000100011
在 286 种可能的三错误模式中,有 11 种的 CRC 为零。它们是 Peter de Rivaz 指出的多项式的八次移动,第一个是 1001010000000
,以及此模式的三个移动:1000001000100
。该模式是三个移位多项式的异或,1001010000000
、0001001010000
和 0000010010100
.
考虑生成多项式 100101
和数据 1011100110001
。应用 CRC 算法,我们得到传输的消息:101110011000100011
我需要在接收方不会注意到的传输消息中出现 3
错误(即位翻转)。因此,CRC 算法将无法注意到错误并错误地批准数据。
这怎么安排?反复试验太乏味了。
我发现对于 1011100110010 10010
(1011100110010b = 5938d
和 10010b = 18d
)我们有 5938 = 18 mod 37
,但是在其上应用 CRC 算法时它失败了。
CRC 算法可以被认为是通过将生成器模式向左移动一些位进行异或来减少消息。
如果消息减少到 0,则 CRC 测试通过。
这意味着,如果您将 CRC 左移一些位进行 XOR,则 CRC 将保持不变。在您的情况下,生成多项式只有 3 个设置位,这使得很容易找到很多修改了 3 位的消息,只需切换位 x、x+2、x+5 即可选择任何 x。
例如我们可以改变
101110011000100011 to
001011011000100011
在 286 种可能的三错误模式中,有 11 种的 CRC 为零。它们是 Peter de Rivaz 指出的多项式的八次移动,第一个是 1001010000000
,以及此模式的三个移动:1000001000100
。该模式是三个移位多项式的异或,1001010000000
、0001001010000
和 0000010010100
.