在 CRC 期间检查数据中的特定值序列

Checking for a specific value sequence within data during a CRC

首先我想说我对 CRC 技术的了解非常有限,我一天中的大部分时间都在谷歌搜索和阅读东西上,但我不太能找到我要找的东西。这很可能是不可能的,如果是这样请告诉我!

我拥有的是一系列看似随机的数据: 0xAF 0xBC 0x1F 0x5C...等

在这个数据中,有一个字段不是随机的(我放在那里),我想对整个数据集使用 CRC 检查来查看这个字段是否设置为正确的值(让比如说 0x12 0x34 0x56 0x78)。我试图偷偷摸摸地做这件事,这是关键,因为我不想让一个不经意的观察者知道我正在寻找那个领域——这就是为什么我不只是读出我想要的位置并与预期值进行比较。

该字段的值是恒定的,其余的几乎是随机的。如果有帮助,这里和那里的一些字段也将保持不变。

这可以吗?我不受限于进行 CRC 检查的次数、遍历数据的方向、更改多项式或任何其他方面。我也可以从数组的中间开始,或者第三个,或者其他什么,但我不想从我感兴趣的领域附近开始。

好的,所以,确认一下,您的数据是这样的:

0xAF 0xBC 0x1F 0x5C 0x11 0x1F 0x5C 0x11
0x2D 0xAB 0xBB 0xCC 0x00 0xBB 0xCC 0x00
0x12 0x34 0x56 0x78 0xFF 0x56 0x78 0xFF

并且您正试图在该数据的特定位置隔离某些内容,例如,在那里找到 0x12 0x34 0x56 0x78 值。

澄清一下,您想要 1) 检查该值(该特定地址范围的值),以及 2) 然后整体执行 crc?或者您想将对值的搜索集成到 crc 算法中?

  • 真诚地尝试了解您的去向。我意识到这并不是一个真正的答案,但它是比评论更好的地方。

我想到的唯一可以执行您想要的操作的函数是离散小波变换。 (CRC 将始终取决于您计算它的所有位 — 这就是重点。)

您可以找到应用于离散小波基函数集的系数,这些函数将使用基函数的正交性为您提供具有仅覆盖感兴趣区域的有限基函数。看起来小波函数在整个消息上,但系数被操纵,以便感兴趣区域外的值在总和中抵消。

虽然这一切对于代码的随意 reader 来说可能并不明显,但写下函数和系数并将其相乘以查看消息中的哪些字节被选择是很简单的系数。