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