md5哈希算法是一个内射函数吗?意味着它将为任何给定的输入生成唯一的输出?
如果没有,是否有其他类似的哈希算法是单射的?
答案 0 :(得分:6)
不,MD5有collision vunerabilities。其他哈希函数(如SHA-1)也有哈希冲突,尽管它比MD5更不可能。
内射散列函数也称为perfect hash function。确实存在完美的散列函数,但在您知道散列是完美的之前,您需要了解有关输入数据的某些要求或信息。
您可以查看CMPH以获取有关创建完美哈希函数的信息。
答案 1 :(得分:0)
md5不是一个内射函数,因为输出小于输入,所以你有比输出更多的输入可能性。
我认为sha-1不是单射的。
答案 2 :(得分:-1)
答案 3 :(得分:-1)
每个哈希函数都不是单射的。哈希将一个大域映射到一个明显更小的codomain。根据鸽子洞原则,这样的函数不能是单射的,因为域中的项目将映射到codomain中的相同项目。
例如,给哈希函数一个大文件作为输入,并接收一个短校验和。有更多可能的大型文件(鸽子)比可能的短校验和(鸽子洞),所以肯定会发生“碰撞”。
答案 4 :(得分:-2)
实际上,是的。
实际上,已经证明它确实存在碰撞的可能性。我会改用SHA-1。 1