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

Instance Method Summary

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

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

Instance Method Detail

def <<(data) : self #

Reads the io's data and updates the digest with it.


abstract def digest_size : Int32 #

Returns the digest output size in bytes.


def file(file_name : Path | String) : self #

Reads the file's content and updates the digest with it.


def final(dst : Bytes) : Bytes #

def final : Bytes #

Returns the final digest output.

This method can only be called once and raises FinalizedError on subsequent calls.

NOTE .dup.final call may be used to get an intermediate hash value.


abstract def final_impl(dst : Bytes) : Nil #

Stores the output digest of #digest_size bytes in dst.


def reset : self #

abstract def reset_impl : Nil #

Resets the object to it's initial state.


def update(data : Bytes) : self #

def update(io : IO) : self #

Reads the io's data and updates the digest with it.


def update(data) : self #

abstract def update_impl(data : Bytes) : Nil #

Hashes data incrementally.