Skip to content

Instantly share code, notes, and snippets.

@base10
Last active April 8, 2017 20:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save base10/25f06aaf9a76795f117c0a52a31ed466 to your computer and use it in GitHub Desktop.
Save base10/25f06aaf9a76795f117c0a52a31ed466 to your computer and use it in GitHub Desktop.
Experimenting with BCrypt
#!/usr/bin/env ruby
require 'bcrypt'
require 'benchmark'
require 'humanize'
require 'pry'
include BCrypt
guesses = Array.new
costs = (8..16).to_a
(1001..11000).map { |num| guesses << num.humanize }
new_pass = "This is a long, complicated passphrase that won't be guessed."
costs.each do |cost|
hashed_pass = Password.create(new_pass, cost: cost)
time = Benchmark.measure do
guesses.each do |guess|
if hashed_pass == guess
puts "match!"
end
end
end
puts "Guesses: #{guesses.count}"
puts "Time: #{time}"
puts "Cost: #{hashed_pass.cost}"
puts "Salt: #{hashed_pass.salt}"
puts "-------------------------"
end
Guesses: 10000
Time: 149.580000 0.120000 149.700000 (149.751110)
Cost: 8
Salt: $2a$08$UTz/J/9U9k5lRDiF9rr9Ju
-------------------------
Guesses: 10000
Time: 301.920000 0.570000 302.490000 (302.796398)
Cost: 9
Salt: $2a$09$RKvAfV6rkdO6a9VIiRkyE.
-------------------------
Guesses: 10000
Time: 577.770000 0.170000 577.940000 (578.008237)
Cost: 10
Salt: $2a$10$qskpMPqOI0/Q7m27ljRImu
-------------------------
Guesses: 10000
Time: 1168.430000 0.550000 1168.980000 (1169.405617)
Cost: 11
Salt: $2a$11$pIx7SIaRiswPcx/qexyjPe
-------------------------
Guesses: 10000
Time: 2373.440000 1.670000 2375.110000 (2375.874326)
Cost: 12
Salt: $2a$12$KC8koN9zFbLCZAuZ2hLv2.
-------------------------
Guesses: 10000
Time: 4740.780000 3.210000 4743.990000 (4745.308169)
Cost: 13
Salt: $2a$13$KlslIV1FFb9RpaYbRBHMYu
-------------------------
Guesses: 10000
Time: 9481.490000 6.580000 9488.070000 (9491.711175)
Cost: 14
Salt: $2a$14$lsCZkFrgojXqb.t4U5AHIu
-------------------------
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment