class Sequel::Plugins::Password::BCryptSHA256Hasher
BCryptSHA256Hasher
implements a BCrypt password hasher using SHA256.
Public Class Methods
new()
click to toggle source
# File lib/sequel_password/hashers.rb, line 91 def initialize @algorithm = :bcrypt_sha256 @cost = 12 @digest = OpenSSL::Digest::SHA256.new end
Public Instance Methods
encode(password, salt)
click to toggle source
# File lib/sequel_password/hashers.rb, line 101 def encode(password, salt) password = @digest.digest(password) unless @digest.nil? hash = BCrypt::Engine.hash_secret(password, salt) "#{@algorithm}$#{hash}" end
salt()
click to toggle source
# File lib/sequel_password/hashers.rb, line 97 def salt BCrypt::Engine.generate_salt(@cost) end
verify(password, encoded)
click to toggle source
# File lib/sequel_password/hashers.rb, line 107 def verify(password, encoded) _, data = encoded.split('$', 2) password = @digest.digest(password) unless @digest.nil? hash = BCrypt::Engine.hash_secret(password, data) constant_time_compare(data, hash) end