我有一个传感设备,它传输一个6字节的消息和一个1字节的计数器,据说是一个校验和。
数据看起来像这样:
------DATA----------- -Counter- --Checksum?--
55 FF 00 00 EC FF ---- 60---------- 1F
计数器中的最后四位始终设置为0,即可能不使用这些位。假设最后一个字节是校验和,因为它具有非常特殊的性质。随着数据的变化,它往往会随机变化。
现在我需要的是找到基于--DATA--计算此校验和的算法。 我所尝试的是所有可能的CRC-8多项式,对于每个多项式我试图反映数据,切换它,用非零等启动它。我得出的结论是我没有处理正常的crc-算法。我也尝试了一些没有成功的flether和adler方法,xor来回的东西,但我仍然不知道如何生成校验和。
我最关心的是,计数器是如何使用的???相同的数据但具有不同的计数器值会产生不同的校验和。 我试图将计数器包含在我的计算中,但没有任何运气。
以下是一些其他数据示例:
55 FF 00 00 F0 FF A0 38
66 0B EA FF BF FF C0 CA
5E 18 EA FF B7 FF 60 BD
F6 30 16 00 FC FE 10 81
值得一提的另一件事是数据中的最后一个字节只取值FF或FE
如果您有任何提示或技巧,我可以尝试在这里发布,我真的很绝望。
由于
答案 0 :(得分:0)
一些随意的想法:
是否可以提供有关相关设备的其他信息?
这可能会给出一些关于如何使用强编码的指示。例如,某些CRC-12(0x8F8)提供的汉明距离为5到数据字长度为53位(在数据中,数据字可以是52位,假设CRC大小为12位)。
修改强> 请参阅How could I guess a checksum algorithm?中的答案,了解其他一些想法。