我有一个 288 位的输入(包括 4 × 32 位恒等函数输出和 10 × 16 位整数)。我需要将其散列到 96 位,并尽可能减少冲突。目标可以被描述为具有概率碰撞的密钥压缩。
我知道 CRC 是一个双射散列,因此可以确保 100% 的均匀分布(据我所知)。在我看来,我应该能够通过输入运行 3 个并行 CRC 路径,从而产生 96 位有损散列(显然不是双射的)的最佳分布。
但是,我也知道 CRC 不用于此类应用程序。通常会使用诸如 MetroHash 之类的算法。
有人可以向我解释为什么 CRC 对这个应用程序来说是一个坏(或不是)的主意吗?
注意:这不适用于任何安全的事情。