流行的哈希算法(md5、crc32、sha-*)是否有任何冲突率度量?
如果这仅取决于输出大小,则测量起来非常简单,但我认为这也取决于分布和算法的内部结构(我认为它需要某种形式的证明)。
流行的哈希算法(md5、crc32、sha-*)是否有任何冲突率度量?
如果这仅取决于输出大小,则测量起来非常简单,但我认为这也取决于分布和算法的内部结构(我认为它需要某种形式的证明)。
如果我尝试为 MD5 创建冲突,我可以在我的 PC 上每 14 秒(平均)使用单核(Core2,2.4 GHz)进行一次冲突。这利用了 MD5 内部结构的弱点。如果我只尝试随机数据并等待冲突出现,那么,我将等待相当长的时间:第一次冲突预计在大约 2 64 个散列消息之后(给我一千台 PC,我应该在大约 20年的全职计算)。
对于当前未中断的加密哈希函数,没有已知的内部弱点(这就是“未中断”的含义),因此尝试随机消息是创建冲突的最知名方法。对于具有 n 位输出的散列函数,在您散列至少 2 n/2条消息之前,以这种方式发生冲突的机会非常小。这意味着对于任何输出为 256 位或更多位的适当散列函数,在实际条件下,冲突率为零(您将不会得到任何结果,这就是故事的结尾)。