Crate blake3[][src]

Expand description

The official Rust implementation of the BLAKE3 cryptographic hash function.

Examples

// Hash an input all at once.
let hash1 = blake3::hash(b"foobarbaz");

// Hash an input incrementally.
let mut hasher = blake3::Hasher::new();
hasher.update(b"foo");
hasher.update(b"bar");
hasher.update(b"baz");
let hash2 = hasher.finalize();
assert_eq!(hash1, hash2);

// Extended output. OutputReader also implements Read and Seek.
let mut output = [0; 1000];
let mut output_reader = hasher.finalize_xof();
output_reader.fill(&mut output);
assert_eq!(&output[..32], hash1.as_bytes());

// Print a hash as hex.
println!("{}", hash1.to_hex());

Cargo Features

The rayon feature provides Rayon-based multi-threading, in particular the join::RayonJoin type for use with Hasher::update_with_join. It is disabled by default, but enabled for docs.rs.

The neon feature enables ARM NEON support. Currently there is no runtime CPU feature detection for NEON, so you must only enable this feature for targets that are known to have NEON support. In particular, some ARMv7 targets support NEON, and some don’t.

The std feature (enabled by default) is required for implementations of the Write and Seek traits, and also for runtime CPU feature detection. If this feature is disabled, the only way to use the SIMD implementations in this crate is to enable the corresponding instruction sets statically for the entire build, with e.g. RUSTFLAGS="-C target-cpu=native". The resulting binary will not be portable to other machines.

Modules

join

The multi-threading abstractions used by Hasher::update_with_join.

traits

Implementations of commonly used traits like digest::Digest and crypto_mac::Mac.

Structs

Hash

An output of the default size, 32 bytes, which provides constant-time equality checking.

Hasher

An incremental hash state that can accept any number of writes.

OutputReader

An incremental reader for extended output, returned by Hasher::finalize_xof.

Constants

KEY_LEN

The number of bytes in a key, 32.

OUT_LEN

The number of bytes in a Hash, 32.

Functions

derive_key

The key derivation function.

hash

The default hash function.

keyed_hash

The keyed hash function.