-
Notifications
You must be signed in to change notification settings - Fork 0
Calculates hamming distance, etc for EY
License
wmoxam/ey-contest
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
1000 word dictionary 12 word phrase up to 5 characters appended to phrase digits and letters How many word sets? 1000! ----- 12!(1000-12)! == total = (1..12).to_a.inject(1.0) do |t, i| t * (1000-(12.0-i.to_f)/i.to_f) end.ceil == 974997404313888311468767317225111552 sets times the number of 5 character combinations 10 digits + 26 letters in either case = 62 62*62*62*62*62 == 916132832 == 893227133206731515717579881878483827649675264 phrases Letter combos of a word Since case can be changed, this greatly increases 12 word set size given N Number of combos == ("1" * N).to_i(2) + 1 1 = 2 2 = 4 3 = 8 4 = 16 5 = 32 6 = 64 etc so now, rather than 1000 word dictionary we have a 32000 word dictionary (if all words are 5 chars long) so we have: total = (1..12).to_a.inject(1.0) do |t, i| t * (32000-(12.0-i.to_f)/i.to_f) end.ceil == 1152012457656667041440530647805828935429644585850109952 sets and 1055396435332282460355974701957148648722705431188328357837144064 phrases It takes my naive ruby implementation 6 seconds to compute 1000 phrases == It would take 33466401424793330173642018707418462985879801851481746 years to compute all of the phrase http://antirez.com/post/some-math-about-the-engineyard-contest.html 3.25 million per seconds == It would take 10297354284551793899582159602282603995655323646 years to compute all of the phrases sha1 had a 4503599627370496 attack with no collisions found (http://en.wikipedia.org/wiki/SHA_hash_functions) In theory brute-force search would require 2**80 (1208925819614629174706176) operations. The c implementation would take 4305291380393 years to mount that sort of attack (on one cpu) This implementation: 200000000 iterations per process 4 processes on a EC2 medium instance average time to complete: 269 seconds == 2,973,977 comparisons per second, per EC2 medium instance == 743,494 comparisons per second, per CPU so 20 cents per 10,706,319,702 comparisons GPU script: ./gpusha1 -device 0 6cac827bae250971a8b1fb6e2a96676f7a077b60 Cloud Ruby DHH one eight six active record controller data rspec mongrel MySQL postgresSQL tokyo MRI jruby rubinius memcached exception metaprogramming reflection Prediction: Likely this will end in a tie (if more than one is serious about throwing resources into it). Hamming distance likely in the low 30's - high 20's
About
Calculates hamming distance, etc for EY
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published