3
A
回答
4
看似無限。但是MD5已經被證明不是collision resistant,所以在某些時候你會有一個重複的。
以下Ruby代碼將循環應用MD5散列算法,直到檢測到重複爲止,此時它將打印達到重複點所需的週期數。原始字符串是從字母字符中隨機生成的。
require 'set'
require 'digest'
keys = Set.new
o = [('a'..'z'), ('A'..'Z')].map { |i| i.to_a }.flatten
string = (0...10).map{ o[rand(o.length)] }.join
count = 0
while !keys.include?(string) do
count += 1
puts count
keys << string
string = Digest::MD5.digest(string)
end
puts "#{count}"
這繼續運行超過15mil週期...我會更新一旦發現重複。
更新:由於我的機器的資源有限,我不得不停止75933338個週期後,上面的腳本,而不發生碰撞(下集已在內存中分配〜8 GB)
相關問題
- 1. 我可以編寫一個posix_time :: ptime對象我自己嗎?
- 2. 我可以自己編寫一個應用程序 - Xcode/iOS嗎?
- 3. 庫函數自己編寫函數n次
- 4. 爲我自己的函數構造函數編寫一個字符串對象
- 5. 一次可以運行多少個AVD?
- 6. 我們可以用ng-click編寫多個調用函數嗎?
- 7. 一次可以在TCP套接字上寫多少個字節?
- 8. 編寫你自己的Jquery函數?
- 9. 如何編寫自己的isnumber()函數?
- 10. 我可以讓鍵盤自己寫嗎?
- 11. 我們可以自己寫一個EOF角色嗎?
- 12. 您可以在Mysql中編寫Select Inside Select查詢多少次?
- 13. 編寫我自己的BIOS
- 14. 我需要實現一個可以多次使用的函數
- 15. Python編程,編寫自己的函數或難以找到內置函數
- 16. FB Apprequests:我可以一次邀請多少個朋友?
- 17. 我可以一次打開多少個TCP套接字?
- 18. 我們可以一次運行多少個mayLaunchUrl?
- 19. 我們可以使用EOF多少次?
- 20. 我可以在Drupal中編寫自己的HTML代碼嗎?
- 21. 我一次可以發送多少次apprequest
- 22. 一次可以訪問一個函數!
- 23. 一個函數可以調用它自己嗎?
- 24. Bash腳本:你可以自己做一個函數調用嗎?
- 25. 一個按鈕可以通過函數刪除自己嗎? Javascript
- 26. 我可以調用另一個函數寫入的函數嗎?
- 27. 如何編寫我自己的函數進行比較?
- 28. XSB Prolog:編寫我自己的setof函數
- 29. 寫一個兩倍函數,它自己乘以一個數字四次,格式如下
- 30. PHP - 使用內置函數編寫自己的函數VS
你的意思是像'而( foo!= md5(foo)){foo = md5(foo)}'?雖然現在md5毫無用處,但我懷疑它是如此根本破壞以至於'foo == md5(foo)'永遠是真的。 –
這在數學上是不可能的。 MD5關係集是有限的。結果,你會返回比關係中更多的元素。 (16^32值)有很多值,但這正是我的問題的重點:我可以做多少次? –
任何其他的統計/數據/研究(例如sha1)都是有用的。 –