Hash 什么';确定16位校验和计算的最有效方法是什么?[CRC Hell:-(]

Hash 什么';确定16位校验和计算的最有效方法是什么?[CRC Hell:-(],hash,radio,checksum,crc,transmission,Hash,Radio,Checksum,Crc,Transmission,我目前正在从事一项涉及嗅探和修改无线电数据包的研究项目,不幸的是,我遇到了一个数学难题-/ 所讨论的数据包具有全部1的16位前导,后跟二进制0,后跟各种数据的32位,后跟某种类型的16位校验和,每个无线数据包总共65位 我已经使用逻辑分析仪收集了几百个数据样本,主要是通过强制传输设备报告不同的状态,我在中收集了数据 现在,进行传输的硬件非常陈旧,大约在90年代初,所以我并不期待有什么新奇的东西。起初我只是想尝试用手来计算,但运气不好。在想到我已经用几个XOR、OR和XAND算出了所有这些之后,我

我目前正在从事一项涉及嗅探和修改无线电数据包的研究项目,不幸的是,我遇到了一个数学难题-/

所讨论的数据包具有全部1的16位前导,后跟二进制0,后跟各种数据的32位,后跟某种类型的16位校验和,每个无线数据包总共65位

我已经使用逻辑分析仪收集了几百个数据样本,主要是通过强制传输设备报告不同的状态,我在中收集了数据

现在,进行传输的硬件非常陈旧,大约在90年代初,所以我并不期待有什么新奇的东西。起初我只是想尝试用手来计算,但运气不好。在想到我已经用几个XOR、OR和XAND算出了所有这些之后,我意识到我的“公式”在具有不同序列号(前16位数据)的其他变送器上发生严重故障

因为它只有16位,而且我认为它太旧了,我认为它可能是一个简单的CRC,但我还没有找到哪怕是一点点正确结果的公式

我甚至在几年前的StackOverflow上找到了另一个类似问题的帖子,但我仔细研究的解决方案似乎都没有帮助

最终目标是能够创建任意序列号的传输,而无需访问实际的物理发射机


想法?评论?

你有什么进展吗

一些有用的链接:

  • 在bbcmicro.net上
  • 已经实现了许多CRC计算
  • 为pycrc
  • 维基百科的“

  • 你的数据有65位-我遗漏了什么吗?你没有。我在某处的笔记上甚至说了65位,但我忘了……请稍等,我会更正我的帖子。数据样本是有效的,尽管如此。:-)好的,发现了问题。我忘了计算传输流中的第17位,我只能假设它是“seperator”位或start sentinal。这确实使总数达到了65位。您能强制所有数据位为0,然后捕获单个1的每个可能位置的校验和吗?我刚刚用另一张表更新了数据示例文件。第一张标有“原始数据”的表格代表我从“真实”发射机收集的采样传输。“强制”数据表示具有修改数据位的传输,其中校验和被强制,直到接收设备注册和确认。