找到最大值CRC多项式的数据长度和给定的汉明距离

时间:2016-02-21 18:15:56

标签: numerical-methods crc hamming-distance

我正在寻找一种数值算法来计算给定CRC多项式和给定汉明距离的最大数据长度。

E.g。假设我有一个带有完全多项式0x19b的8位CRC。我想实现汉明距离为4.现在在这些条件下可以保护多少位数据?

是否有一些可以用来解决这个问题的数值算法(理想情况下是C或C ++代码)?

1 个答案:

答案 0 :(得分:0)

不是一个完整的答案,但我的spoof code可以适应这个问题。

要确定您未满足给定消息长度的汉明距离4的要求,您只需找到汉明距离为3的单个代码字。如果您在消息中提供欺骗的一组位位置,它将确定要反转哪些位以保持CRC不变。欺骗简单地在GF(2)上求解一组线性方程,以找到要反转的位位置。

这将很快缩小将起作用的消息长度。一旦你有一个候选人长度 n ,你就无法找到距离为3的代码字,证明有 no 这样的代码字会多一点工作。您需要生成所有可能的3位模式,其中有 n(n-1)(n-2)/ 6 ,并查看其中是否有任何CRC为零。取决于 n ,这可能不会太令人生畏。一种快速的方法是使用单个位集生成所有消息的CRC,并从该集合中排除所有三个CRC的选择,以查看其中是否有任何一个为零。

我猜想通过智能地剔除线性方程求解器中使用的行,允许所有位位置,可以更快地完成最后一步。但是,这里的余量不足以让我表达证据。