我正在尝试发现丢失软件的算法,有一个设备需要一些数据,并使用“KEY”验证数据,如果您更改数据的任何参数,则需要一个有效的 KEY。
数据由 4 个 int 值组成,KEY 是 6 位的 HEX。
param1 param2 param3 param4 KEY
5669 30/06/2014 187769 960 0xA34108
5812 31/01/2015 233789 960 0xFAE094
5812 31/01/2015 233859 960 0x176471
6437 30/06/2015 368923 10000 0x35E6C2
6468 31/07/2015 398013 10000 0x404818
6161 30/09/2015 312581 960 0x9A59BC
6161 30/09/2015 311298 960 0xEC454C
6655 31/12/2016 448758 960 0x??????
我怀疑该算法是一种 CRC,因为在该软件中,您可以在名为 CRC 的字段中输入类似 4 位十六进制种子的内容:
根据 KEY 的长度,我认为它应该是 CRC-24,但软件使用的是 4 长度,因此不是 CRC-24 的异或输入或异或输出。
我已经通过蛮力在 Python[crcmod] 上进行了测试,所有参数组合用作输入数据以及所有组合 [ 0x000000- 0xFFFFFF] 可能的种子和 CRC-24 的异或输出。我也试图通过曲线拟合找到方程,但没有运气,关系接缝不可预测。
我知道有很多 CRC 版本:多项式、哈希表等。有人知道可以在这里使用的 CRC 版本或算法吗?