Thanks to visit codestin.com
Credit goes to docs.rs

Crate blake2

Source
Expand description

An implementation of the BLAKE2 hash functions.

§Usage

Blake2b512 and Blake2s256 can be used in the following way:

use blake2::{Blake2b512, Blake2s256, Digest};
use hex_literal::hex;

// create a Blake2b512 object
let mut hasher = Blake2b512::new();

// write input message
hasher.update(b"hello world");

// read hash digest and consume hasher
let res = hasher.finalize();
assert_eq!(res[..], hex!("
    021ced8799296ceca557832ab941a50b4a11f83478cf141f51f933f653ab9fbc
    c05a037cddbed06e309bf334942c4e58cdf1a46e237911ccd7fcf9787cbc7fd0
")[..]);

// same example for Blake2s256:
let mut hasher = Blake2s256::new();
hasher.update(b"hello world");
let res = hasher.finalize();
assert_eq!(res[..], hex!("
    9aec6806794561107e594b1f6a8a6b0c92a0cba9acf5e5e93cca06f781813b0b
")[..]);

Also see RustCrypto/hashes readme.

§Variable output size

This implementation supports run and compile time variable sizes.

Run time variable output example:

use blake2::Blake2bVar;
use blake2::digest::{Update, VariableOutput};
use hex_literal::hex;

let mut hasher = Blake2bVar::new(10).unwrap();
hasher.update(b"my_input");
let mut buf = [0u8; 10];
hasher.finalize_variable(&mut buf).unwrap();
assert_eq!(buf, hex!("2cc55c84e416924e6400"));

Compile time variable output example:

use blake2::{Blake2b, Digest, digest::consts::U10};
use hex_literal::hex;

type Blake2b80 = Blake2b<U10>;

let mut hasher = Blake2b80::new();
hasher.update(b"my_input");
let res = hasher.finalize();
assert_eq!(res[..], hex!("2cc55c84e416924e6400")[..]);

§Acknowledgment

Based on the blake2-rfc crate.

Re-exports§

pub use digest;

Structs§

Blake2bMac
Blake2b MAC function
Blake2bVarCore
Blake2b instance with a variable output.
Blake2sMac
Blake2s MAC function
Blake2sVarCore
Blake2s instance with a variable output.

Traits§

Digest
Convenience wrapper trait covering functionality of cryptographic hash functions with fixed output size.

Type Aliases§

Blake2b
BLAKE2b generic over output size.
Blake2b512
BLAKE2b-512 hasher state.
Blake2bCore
Core hasher state of BLAKE2b generic over output size.
Blake2bMac512
BLAKE2b-512 MAC state.
Blake2bVar
BLAKE2b which allows to choose output size at runtime.
Blake2s
BLAKE2s generic over output size.
Blake2s256
BLAKE2s-256 hasher state.
Blake2sCore
Core hasher state of BLAKE2s generic over output size.
Blake2sMac256
BLAKE2s-256 MAC state.
Blake2sVar
BLAKE2s which allows to choose output size at runtime.