Hashing
Last updated
Last updated
is a cryptographic hash function. It takes a message of any size and produces a 128-bit to 512-bit hash.
This hash acts as a fingerprint for the data. Hashes can be used to uniquely identify messages, detect corruption, detect duplicate data, and index data in a hash table.
However, unkeyed hashes do not provide (e.g. for ). Furthermore, they should be avoided for . Use the linked APIs instead.
BLAKE2b is NOT suitable for hashing passwords. Use instead.
A hash size of at least 256 bits is strongly recommended to obtain collision resistance.
Fills a span with a hash computed from a message.
hash
has a length less than MinHashSize
or greater than MaxHashSize
.
The hash could not be computed.
Fills a span with a hash computed from a Stream message. This is useful for hashing files.
hash
has a length less than MinHashSize
or greater than MaxHashSize
.
message
is null.
message
cannot be read.
The hash could not be computed.
Provides support for computing a hash from several messages.
hashSize
is less than MinHashSize
or greater than MaxHashSize
.
hash
has a length not equal to hashSize
.
The hash could not be computed.
Cannot update after finalizing or finalize twice (without reinitializing or restoring a cached state).
Cannot cache the state after finalizing (without reinitializing).
Cannot restore the state when it has not been cached.
The object has been disposed.
These are used for validation and/or save you defining your own constants.
Do NOT manually truncate a hash. Instead, specify the hash size you want directly. The hash size affects the output, which provides domain separation.
CacheState()
can only cache the state once. Each subsequent call will overwrite the previously cached state. See the for when this method should be used.
Do NOT use ComputeHash()
for key derivation. Read the page instead.
Unlike older hash functions (e.g. MD5, SHA-1, SHA-256, and SHA-512), BLAKE2b is immune to .
If you are making multiple calls to IncrementalBLAKE2b
with unchanging/static data at the beginning, you can cache the state to improve performance. This allows you to only process this data once. It is more relevant in scenarios, as explained on that page.