class Stribog::CreateHash
Class, which creates digests. @author WildDima
Attributes
digest_length[R]
Length of digest. Should be equal to 256 or 512.
@api public @example
digest.digest_length
@return [Fixnum] binary representation of digest
message[R]
Original message
@api public @example
hash.message
@return [String] contains original message
message_vector[R]
Contain message as instance of BinaryVector
@api public @example
digest.message_vector
@return [BinaryVector] binary representation of message
vector[R]
Public Class Methods
new(message, transformation = :from_hex, vector = Stribog.vector)
click to toggle source
# File lib/stribog/create_hash.rb, line 32 def initialize(message, transformation = :from_hex, vector = Stribog.vector) @message = message @transformation = transformation @vector = vector end
Public Instance Methods
call(digest_length = HASH_LENGTH)
click to toggle source
Create digest of {#message}. Default equal to 512.
@example
Stribog::CreateHash.new('ruby').call(256) Stribog::CreateHash.new('ruby').call(512)
@author WildDima
# File lib/stribog/create_hash.rb, line 44 def call(digest_length = HASH_LENGTH) @digest_length = digest_length return_hash( Stage::Final.new( Stage::Compression.new( Stage::Initial.new(self) ) ).call ) end
Private Instance Methods
create_digest(vector)
click to toggle source
Create new instance of Digest
# File lib/stribog/create_hash.rb, line 75 def create_digest(vector) digest.new(vector: vector) end
digest()
click to toggle source
# File lib/stribog/create_hash.rb, line 79 def digest @digest ||= Digest end
return_hash(final_vector)
click to toggle source
Method, which return digest, dependent on them length
# File lib/stribog/create_hash.rb, line 58 def return_hash(final_vector) case digest_length when 512 create_digest(final_vector) when 256 create_digest(vector_from_array(final_vector[0..31])) else raise ArgumentError, "digest length must be equal to 256 or 512, not #{digest_length}" end end
vector_from_array(v)
click to toggle source
# File lib/stribog/create_hash.rb, line 70 def vector_from_array(v) vector.new(v) end