这个问题更多是在数学方面。我已经给出了十六进制的 4 字节 UID 列表和相应的 2 字节代码列表 - 我们称它们为哈希。
它看起来像这样:
7D04E214 --> 4A49
7D048DC3 --> A0E7
7D04DB2E --> 4191
...
我有大约 50 个这样的元组,所以我想如果我找到一种算法可以为所有 UID 计算正确的哈希,我可以很确定这是正确的。
这是我的问题:我真的不知道如何开始。我不是数学家,对这类问题没有经验。我怀疑某种按位算法。看起来它可能是 CRC16,但我已经伪造了这一点。我不认为这是任何流行的算法。我也认为(或者更确切地说希望)算法不是太复杂。
我知道找到从某个输入计算某个输出的函数的一般问题是无法确定的。但是假设算法很简单,我有什么可能性?有什么工具可以帮助我吗?对于编写我自己的工具,您有什么建议可以阅读吗?我正在考虑某种蛮力,但我该如何系统地做到这一点?
提前致谢!
更新:由于我的问题有些不明确:我真的需要首先找到一种用于从 UID 创建散列的算法 - 或者至少一个对所有可能的 UID 行为相同的算法(即 4 -字节数)。既然有人指出有无限多的可能函数,我想我必须找到最简单的函数并针对更多的 UID 值测试它们。正如我所说,我实际上假设该算法很简单,并且没有充满晦涩的密钥。如果我错了,正如你所说,我注定要失败。但如果没有,也许我有机会试错。