An implementation of the BLAKE2 hash functions.
Blake2b can be used in the following way:
# extern crate hex_literal; # extern crate blake2; #
Also see RustCrypto/hashes readme.
Variable output size
If you need variable sized output you can use
which support variable output sizes through
trait has to be imported as well.
use VarBlake2b; use ; let mut hasher = new.unwrap; hasher.input; hasher.variable_result
Message Authentication Code (MAC)
BLAKE2 can be used as a MAC without any additional constructs:
use Blake2b; use Mac; let mut hasher = new_varkey.unwrap; hasher.input; // `result` has type `MacResult` which is a thin wrapper around array of // bytes for providing constant time equality check let result = hasher.result; // To get underlying array use `code` method, but be carefull, since // incorrect use of the code value may permit timing attacks which defeat // the security provided by the `MacResult` let code_bytes = result.code; // To verify the message it's recommended to use `verify` method let mut hasher = new_varkey.unwrap; hasher.input; // `verify` return `Ok(())` if code is correct, `Err(MacError)` otherwise hasher.verify.unwrap;
Based on the blake2-rfc crate.