为什么像这样使用生成器多项式 G(x) =x^8 +x^2 +x+1 对于 CRC-8。如果这是最佳的,我们如何证明它。或使用这个多项式 G(x) = x^5 + x^4 + x^2 + 1 对于 CRC-5-ITU。
选择的多项式决定了CRC的错误检测能力。 此功能以汉明距离为单位进行度量,汉明距离是在保持 CRC 不变的情况下可以在消息中引入的最小位错误数。 这将是一个误报,CRC说消息没问题,但事实并非如此。 同样重要的是,在每个位数的位错误中存在多少个这样的位模式,称为汉明权重。 这决定了比 n 位错误导致误报的概率。
Koopman等人对所有可能的多项式进行了详尽的搜索,以找到各种消息长度的汉明距离最大和汉明权重最小的多项式。 例如,您在ITU-T建议书I.432.1 CRC中使用的8次多项式很好,但不是你能选择的最好的。 多项式 x8+x6+x3+x2+1 为较长的消息提供 3 的汉明距离。 这两页提供了Koopman的最新结果。
这里的另一个答案是"最佳多项式取决于所使用的输入数据集"。 CRC多项式的错误检测能力所依赖的数据的唯一方面是应用CRC的块的长度。 由于CRC的线性特性,错误检测能力实际上完全独立于消息中的数据。 如果您独占或两条相同长度的消息,则该新消息的CRC将是原始两条消息的CRC的独占或CRC。 因此,一旦找到使CRC保持不变的最小错误集,就可以将这组错误应用于任何相同长度的消息以获得误报。