class PHash
Attributes
digest[R]
hash_function[R]
key_length[R]
secret[R]
seed[R]
Public Class Methods
new(hash_function, secret, seed, key_length = 32)
click to toggle source
# File lib/p_hash.rb, line 7 def initialize(hash_function, secret, seed, key_length = 32) @hash_function = hash_function @secret = secret @seed = seed @key_length = key_length calculate_digest end
Public Instance Methods
base64digest()
click to toggle source
# File lib/p_hash.rb, line 19 def base64digest @base64digest ||= Base64.strict_encode64(digest) end
hexdigest()
click to toggle source
# File lib/p_hash.rb, line 15 def hexdigest @hexdigest ||= digest.unpack('H*').first end
Private Instance Methods
calculate_digest()
click to toggle source
# File lib/p_hash.rb, line 25 def calculate_digest digest = '' while digest.length < key_length digest = digest + OpenSSL::HMAC.digest( hash_function, secret, next_a_value + seed ) end @digest = digest[0...key_length] end
next_a_value()
click to toggle source
# File lib/p_hash.rb, line 37 def next_a_value @a_value = OpenSSL::HMAC.digest( hash_function, secret, @a_value || seed ) end