回答
实际上,是的。
实际上,已经证明它确实存在碰撞的可能性。我会用SHA-1代替。 1
实际上=现实。所以不行。 – 2012-01-11 16:14:02
我不认为一个字的答案是适当的。在很多情况下,md5的碰撞几率比它仍然是一个可行的算法选择还要低,这取决于情况。 – KingCronus 2012-01-11 16:16:38
md5不是一个内射函数,因为输出小于输入,所以你有比输出更多的输入可能性。
我认为sha-1不是内射的。
你怎么能想到,你对MD5提出的相同论点也不适用于SHA-1? – 2012-01-11 16:13:25
我完全同意,我只是忘了'不'字。 SHA-1不是单射 – JuSchz 2012-01-11 16:16:31
没有,MD5有collision vunerabilities。其他散列函数(如SHA-1)也具有散列冲突,尽管它比MD5更不可能。
内射散列函数也被称为perfect hash function。完美的散列函数确实存在,但是在你知道你的散列是完美的之前,你需要知道关于输入数据的某些需求或信息。
有关创建完美哈希函数的信息,您可以查看CMPH。
如果一个完美的哈希函数可以存在,那么可以说这条评论“你可以很容易地证明,任何能够在比其输出大投入工作的散列函数不能射。”是错的? – Yasser1984 2012-01-14 20:55:27
评论是错误的,因为完美的散列在给定的集合上工作。例如,如果集合是{10,20,30,...}并且哈希函数是函数哈希(int i){return i/10; }'。我认为这个评论实际上意味着输入的_range_。 – cmbuckley 2012-01-15 16:36:08
每个哈希函数都不是内射的。哈希将大型域映射到明显更小的共域。根据鸽子洞原理,这样的函数不能是内射的,因为域中会有项目映射到共域的相同项目。
例如,给散列函数一个大文件作为输入,并接收一个短校验和。有很多可能的大文件(鸽子)比可能的短校验和(鸽子洞)要多,所以“碰撞”肯定会发生。
- 1. 哪个库是MD5()函数?
- 2. mmap是内置函数吗?
- 3. md5()函数?
- 4. '$ .md5的神秘不是函数'
- 5. 使用md5函数
- 6. MD5散列函数
- 7. 的OBJÇMD5从PHP MD5()函数
- 8. C++函数来判断一个给定的函数是否是内射的
- 9. id是一个python内建函数吗?
- 10. 如何使用md5函数创建md5哈希,因为crypt函数使用md5函数生成,而不是crypt函数?
- 11. 解密md5哈希函数
- 12. 如果数值已经是MD5,卡桑德拉会避免计算行MD5吗?
- 13. 在C++中,构造函数和析构函数可以是内联函数吗?
- 14. md5()函数中的PHP显示错误
- 15. 火花sql中列的Md5列函数
- 16. Spark集群中的RDD映射函数内调用函数
- 17. 宏参数是函数吗?
- 18. php md5哈希函数返回500内部错误
- 19. 什么是函数md5()在PHP中的(默认)编码?
- 20. 在PHP中,什么是Android/Java的MD5函数?
- 21. 在Z3中定义内射函数
- 22. socket.io - 从匿名函数内发射
- 23. C++中的映射函数是什么?
- 24. 在函数体内的typedef是不好的编程习惯吗?
- 25. 只能调用一次的大函数是内联的吗?
- 26. 函数'未在此范围内声明',但它是!不是吗?
- 27. PHP中有内置的sortByKey()函数吗?
- 28. Calc的内容-MD5在AFNetworking
- 29. 这是对内联函数对象的调用吗?
- 30. 内联函数静态常量是唯一的吗?
您可以很容易地证明任何能够处理大于其输出的输入的散列函数不能是内射的。 – thiton 2012-01-11 16:17:48
我不确定这个论证是否有意义,还有什么可以证明的吗? – Yasser1984 2012-01-14 20:58:43
[MD5的最小块长度为512位,输出为128位](http://en.wikipedia.org/wiki/MD5#Algorithm)。它不能是内射的,因为输入数字比输出数字多2^384。你可以谈论一个受限制的MD5,但是你必须定义你的填充方法。 – thiton 2012-01-14 21:07:36