md5是一个内射函数吗?

时间:2012-01-11 16:02:20

标签: md5 terminology

md5哈希算法是一个内射函数吗?意味着它将为任何给定的输入生成唯一的输出?

如果没有,是否有其他类似的哈希算法是单射的?

5 个答案:

答案 0 :(得分:6)

不,MD5有collision vunerabilities。其他哈希函数(如SHA-1)也有哈希冲突,尽管它比MD5更不可能。

内射散列函数也称为perfect hash function。确实存在完美的散列函数,但在您知道散列是完美的之前,您需要了解有关输入数据的某些要求或信息。

您可以查看CMPH以获取有关创建完美哈希函数的信息。

答案 1 :(得分:0)

md5不是一个内射函数,因为输出小于输入,所以你有比输出更多的输入可能性。

我认为sha-1不是单射的。

答案 2 :(得分:-1)

这是另一篇可以回答你问题的帖子。

技术上没有,但有点是,因为他们有相同的机会。

这是另一篇讨论this issue.

的帖子

答案 3 :(得分:-1)

每个哈希函数都不是单射的。哈希将一个大域映射到一个明显更小的codomain。根据鸽子洞原则,这样的函数不能是单射的,因为域中的项目将映射到codomain中的相同项目。

例如,给哈希函数一个大文件作为输入,并接收一个短校验和。有更多可能的大型文件(鸽子)比可能的短校验和(鸽子洞),所以肯定会发生“碰撞”。

答案 4 :(得分:-2)

实际上,是的。

实际上,已经证明它确实存在碰撞的可能性。我会改用SHA-1。 1