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
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