【发布时间】:2015-10-21 12:30:32
【问题描述】:
我遇到了一个非常烦人的问题,使用 crc16 哈希来管理我的一些信息。
在我的应用程序中,我将一些信息传递给一个 url 参数,一个巨大的编码上下文。该上下文允许用户恢复他们的旧搜索。在这种情况下,我会散列一些元素以确保不会占用太多字符。
似乎有些元素返回相同的哈希(crc16 算法)。
我将 has 转换为字符串: crc.ToString("X4"); 例如,两个不同的元素给了我:5A8E。
我尝试使用 crc32,但如果这样做,旧的上下文将无法识别。
您知道我该如何找到解决方案吗?非常感谢
【问题讨论】:
-
使用冲突较少的哈希算法并重新哈希数据。
-
是的,但是如果我这样做,旧的散列值将无法恢复?
-
为什么要恢复/保留它们?
-
因为用户可以在这个上下文中保存一些 url,即使我做了一些更改,它也必须工作。
-
CRC 不是哈希。这是一个校验和,不适合用作哈希函数。