class Digest::VLH

Constants

BASE

Public Class Methods

digest(str, len) click to toggle source
# File lib/digest/vlh.rb, line 11
def self.digest(str, len)
  self.new(len).digest(str)
end
hexdigest(str, len) click to toggle source
# File lib/digest/vlh.rb, line 7
def self.hexdigest(str, len)
  self.new(len).hexdigest(str)
end
new(len) click to toggle source
# File lib/digest/vlh.rb, line 15
def initialize(len)
  @len = len
  @sha512 = Digest::SHA512.new
end

Public Instance Methods

<<(str)
Alias for: update
digest(str = "") click to toggle source
# File lib/digest/vlh.rb, line 30
def digest(str = "")
  return "" if @len <= 0

  update(str)
  digest = (expand_digest.to_i(BASE) % div_num).to_s
  digest.rjust(@len, "0")
end
hexdigest(str = "") click to toggle source
# File lib/digest/vlh.rb, line 38
def hexdigest(str = "")
  return "" if @len <= 0

  update(str)
  digest = (expand_digest.to_i(BASE) % div_hex).to_s(BASE)
  digest.rjust(@len, "0")
end
reset() click to toggle source
# File lib/digest/vlh.rb, line 25
def reset
  @sha512.reset
  self
end
update(str) click to toggle source
# File lib/digest/vlh.rb, line 20
def update(str)
  @sha512.update(str)
  self
end
Also aliased as: <<

Private Instance Methods

div_hex() click to toggle source
# File lib/digest/vlh.rb, line 58
def div_hex
  ("f" * @len).to_i(BASE)
end
div_num() click to toggle source
# File lib/digest/vlh.rb, line 62
def div_num
  10 ** @len
end
expand_digest() click to toggle source
# File lib/digest/vlh.rb, line 50
def expand_digest
  strlen = @sha512.digest_length * 2
  digest = @sha512.hexdigest
  repeat = (@len.to_f / strlen).ceil

  digest * repeat
end