class Dighasher::Generator

Hash Generate Class

Public Class Methods

new(mode, str=nil, bitlen=256) click to toggle source

constructor @param [integer] mode Hash mode. DigestGenerator::Xxxx constant. @param [String] str target string @param [integer] bitlen SHA2 bitlength. 256 or 384 or 512.

# File lib/dighasher/generator.rb, line 13
def initialize(mode, str=nil, bitlen=256)

  @bitlen = bitlen
  set_bitlen(mode)
  # generate digest instance
  @digest = Dighasher::DigestGenerator::generate_digest(mode, str, @bitlen)
  @mode = mode
  @base_str = str
end

Public Instance Methods

base_str() click to toggle source

get hash base string. @return [String] hash base string.

# File lib/dighasher/generator.rb, line 127
def base_str
  @base_str
end
bitlen() click to toggle source

get byte length @return [integer] bitlen. Use DigestGenerator::SHA2 mode only.

# File lib/dighasher/generator.rb, line 121
def bitlen
  @bitlen
end
change_mode(mode, bitlen=256) click to toggle source

change hash mode. @param [integer] mode Hash mode. DigestGenerator::Xxxx constant. @param [integer] bitlen SHA2 bitlength. 256 or 384 or 512.

# File lib/dighasher/generator.rb, line 26
def change_mode(mode, bitlen=256)

  # generate new digest instance
  @digest = Dighasher::DigestGenerator::generate_digest(mode, @base_str, bitlen)
  @mode = mode
  @bitlen = bitlen
end
digest() click to toggle source

get digest instance. @return [Digest] digest lib instance.

# File lib/dighasher/generator.rb, line 109
def digest
  @digest
end
equals(str, temp_add_str=nil) click to toggle source

compare str and hash str. @param [String] str compare target string @param [String] temp_add_str temporary additional string. @return [boolean] true:equal hash / false:not equal hash

# File lib/dighasher/generator.rb, line 61
def equals(str, temp_add_str=nil)

  # if exist temporary add string, dup @digest and add str.
  eq_digest = get_temporary_digest(temp_add_str)
  # generate compare digest instance.
  comp_digest = Dighasher::DigestGenerator.generate_digest(@mode, str, @bitlen)

  # compare hex digest value.
  return eq_digest == comp_digest.hexdigest
end
file_hash(file_path) click to toggle source

generate file hash. reset before generate hash. @param [String] file_path target file path return [String] hash

# File lib/dighasher/generator.rb, line 100
def file_hash(file_path)

  @digest.reset
  @base_str = nil
  @digest.file(file_path).to_s
end
generate_hash(use_hex_string=true, temp_add_str=nil) click to toggle source

generate hash. @param [boolean] use_hex_string if true, use hexdigest. else, use digest. @param [String] temp_add_str temporary additional string. @return [Byte / String] hash

# File lib/dighasher/generator.rb, line 76
def generate_hash(use_hex_string=true, temp_add_str=nil)

  # if exist temp_add_str, dup @digest and add str.
  hash_digest = get_temporary_digest(temp_add_str)
  hash =  use_hex_string ? hash_digest.hexdigest : hash_digest.digest
  hash
end
generate_hash!(use_hex_string=true) click to toggle source

generate hash. reset after generate hash. @param [boolean] use_hex_string if true, use hexdigest. else, use digest. @return [Byte / String] hash.

# File lib/dighasher/generator.rb, line 88
def generate_hash!(use_hex_string=true)

  # generate hash and @digest reset.
  hash = use_hex_string ? @digest.hexdigest! : @digest.digest!
  @base_str = nil
  hash
end
mode() click to toggle source

get digest mode. @return [integer] digest mode. DigestGenerator constant.

# File lib/dighasher/generator.rb, line 115
def mode
  @mode
end
reset() click to toggle source

reset digest instance.

# File lib/dighasher/generator.rb, line 50
def reset

  # reset @digest
  @digest.reset
  @base_str = nil
end
update(str) click to toggle source

update hash target string. @param [String] str update string

# File lib/dighasher/generator.rb, line 36
def update(str)

  # unless str, no update.
  return unless str

  # update str.
  @digest.update(str)

  # if @base_str equals nil, @base_str set empty.
  @base_str = '' unless @base_str
  @base_str << str
end

Private Instance Methods

get_temporary_digest(temp_add_str) click to toggle source

get temporary digest(dup @digest) and add string. @param [String] temp_add_str temporary additional string. @return [String] temporary digest instance.

# File lib/dighasher/generator.rb, line 149
def get_temporary_digest(temp_add_str)

  # if not exist temp_add_str, return @digest
  return @digest unless temp_add_str

  # dup @digest and add str.
  temp_digest = @digest.dup
  temp_digest.update(temp_add_str)
  temp_digest
end
set_bitlen(mode) click to toggle source

set bitlen @param [integer] mode Hash mode. DigestGenerator::Xxxx constant.

# File lib/dighasher/generator.rb, line 135
def set_bitlen(mode)

  # set bitlen
  case mode
  when DigestGenerator::SHA256 then
    @bitlen = 256
  when DigestGenerator::SHA512 then
    @bitlen = 512
  end
end