abstract class Digest
Overview
Digest
is the base type of hashing algorithms like Digest::MD5
,
Digest::SHA1
, Digest::SHA256
, or Digest::SHA512
.
A Digest
instance holds the state of an ongoing hash calculation.
It can receive new data to include in the hash via #update
, #<<
, or #file
.
Once all data is included, use #final
or #hexfinal
to get the hash. This will mark the
ongoing calculation as finished. A finished calculation can't receive new data.
A digest.dup.final
call may be used to get an intermediate hash value.
Use #reset
to reuse the Digest
instance for a new calculation.
Direct Known Subclasses
Defined in:
digest/digest.crInstance Method Summary
-
#<<(data) : self
Reads the io's data and updates the digest with it.
-
#digest_size : Int32
Returns the digest output size in bytes.
-
#file(file_name : Path | String) : self
Reads the file's content and updates the digest with it.
-
#final(dst : Bytes) : Bytes
Puts the final digest output into
dst
. -
#final : Bytes
Returns the final digest output.
-
#final_impl(dst : Bytes) : Nil
Stores the output digest of #digest_size bytes in dst.
-
#hexfinal(dst : Bytes) : Nil
Writes a hexadecimal-encoded digest to
dst
. -
#hexfinal(io : IO) : Nil
Writes a hexadecimal-encoded digest to
IO
. -
#hexfinal : String
Returns a hexadecimal-encoded digest in a new
String
. -
#reset : self
Resets the state of this object.
-
#reset_impl : Nil
Resets the object to it's initial state.
- #update(data : Bytes) : self
-
#update(io : IO) : self
Reads the io's data and updates the digest with it.
- #update(data) : self
-
#update_impl(data : Bytes) : Nil
Hashes data incrementally.
Instance methods inherited from class Reference
==(other : self)==(other : JSON::Any)
==(other : YAML::Any)
==(other) ==, dup dup, hash(hasher) hash, initialize initialize, inspect(io : IO) : Nil inspect, object_id : UInt64 object_id, pretty_print(pp) : Nil pretty_print, same?(other : Reference) : Bool
same?(other : Nil) same?, to_s(io : IO) : Nil to_s
Constructor methods inherited from class Reference
new
new,
unsafe_construct(address : Pointer, *args, **opts) : self
unsafe_construct
Class methods inherited from class Reference
pre_initialize(address : Pointer)
pre_initialize
Instance methods inherited from class Object
! : Bool
!,
!=(other)
!=,
!~(other)
!~,
==(other)
==,
===(other : JSON::Any)===(other : YAML::Any)
===(other) ===, =~(other) =~, as(type : Class) as, as?(type : Class) as?, class class, dup dup, hash(hasher)
hash hash, in?(collection : Object) : Bool
in?(*values : Object) : Bool in?, inspect(io : IO) : Nil
inspect : String inspect, is_a?(type : Class) : Bool is_a?, itself itself, nil? : Bool nil?, not_nil!(message)
not_nil! not_nil!, pretty_inspect(width = 79, newline = "\n", indent = 0) : String pretty_inspect, pretty_print(pp : PrettyPrint) : Nil pretty_print, responds_to?(name : Symbol) : Bool responds_to?, tap(&) tap, to_json(io : IO) : Nil
to_json : String to_json, to_pretty_json(indent : String = " ") : String
to_pretty_json(io : IO, indent : String = " ") : Nil to_pretty_json, to_s(io : IO) : Nil
to_s : String to_s, to_yaml(io : IO) : Nil
to_yaml : String to_yaml, try(&) try, unsafe_as(type : T.class) forall T unsafe_as
Class methods inherited from class Object
from_json(string_or_io, root : String)from_json(string_or_io) from_json, from_yaml(string_or_io : String | IO) from_yaml
Macros inherited from class Object
class_getter(*names, &block)
class_getter,
class_getter!(*names)
class_getter!,
class_getter?(*names, &block)
class_getter?,
class_property(*names, &block)
class_property,
class_property!(*names)
class_property!,
class_property?(*names, &block)
class_property?,
class_setter(*names)
class_setter,
def_clone
def_clone,
def_equals(*fields)
def_equals,
def_equals_and_hash(*fields)
def_equals_and_hash,
def_hash(*fields)
def_hash,
delegate(*methods, to object)
delegate,
forward_missing_to(delegate)
forward_missing_to,
getter(*names, &block)
getter,
getter!(*names)
getter!,
getter?(*names, &block)
getter?,
property(*names, &block)
property,
property!(*names)
property!,
property?(*names, &block)
property?,
setter(*names)
setter
Instance Method Detail
Reads the file's content and updates the digest with it.
Puts the final digest output into dst
.
Faster than the Bytes
allocating version.
Use when hashing in loops.
#final
or #hexfinal
can only be called once and raises FinalizedError
on subsequent calls.
NOTE .dup.final(dst)
call may be used to get an intermediate hash value.
Returns the final digest output.
#final
or #hexfinal
can only be called once and raises FinalizedError
on subsequent calls.
NOTE .dup.final
call may be used to get an intermediate hash value.
Stores the output digest of #digest_size bytes in dst.
Writes a hexadecimal-encoded digest to dst
.
Faster than the String
allocating version.
Use when hashing in loops.
#final
or #hexfinal
can only be called once and raises FinalizedError
on subsequent calls.
NOTE .dup.final
call may be used to get an intermediate hash value.
Writes a hexadecimal-encoded digest to IO
.
Faster than the String
allocating version.
#final
or #hexfinal
can only be called once and raises FinalizedError
on subsequent calls.
NOTE .dup.final
call may be used to get an intermediate hash value.
This method is restricted to a maximum digest size of 64 bits. Implementations that allow a larger digest size should override this method to use a larger buffer.
Returns a hexadecimal-encoded digest in a new String
.
#final
or #hexfinal
can only be called once and raises FinalizedError
on subsequent calls.
NOTE .dup.hexfinal
call may be used to get an intermediate hash value.
Resets the state of this object. Use to get another hash value without creating a new object.