假设以下情形:
问题是可以解决的,CRC32的一个例子如下:
即,将具有CRC32的数据块嵌入到具有CRC32的另一个数据块中,可以替换内部块而不影响外部CRC(这与在包含CRC的块上执行CRC计算有关,你得到相同的"魔术值":0xDEBB20E3,或者在CRC计算器中可以看到补充:0x2144DF1C)。
我认为这个包含不应该影响CRC的性能(错误检测能力),无论是在外部块还是内部块的任何部分(如果我只通过外部CRC检查它,自然是内部块)由它自己的CRC检查不会受到影响),但我不完全确定。
(当然内部块在外部CRC的错误检测方面没有得到任何改进,因为当内部CRC发生无法检测到的错误时,这意味着它会产生相同的&#34 ;魔术值",因此也破坏了外部CRC检测其中错误的能力)
所以问题是,如果以这种方式使用CRC,那么外部块的部分(或者只有外部CRC检查的内部块)是否会出现错误检测性能的任何降低。
答案 0 :(得分:0)
没有。事实上,通过在消息中插入第二个CRC,您可以提高整体错误检测概率。您也可以检查一个,以查看替换部分中是否有错误。
答案 1 :(得分:-1)
CRC校验是否捕获错误取决于错误翻转输入的哪些位,而不是这些位的原始值。
因此,检查的数据对CRC的错误检测能力没有影响,除非它使传输系统易于产生某些类型的错误。
情况不太可能如此,几乎可以肯定不会依赖于数据的CRC,因此您的方案不会降低错误检测的范围。