Crate blake2s_simd
source ·Expand description
An implementation of the BLAKE2s and BLAKE2sp hash functions. See also
blake2b_simd
.
This crate includes:
- 100% stable Rust.
- SIMD implementations based on Samuel Neves’
blake2-avx2
. These are very fast. For benchmarks, see the Performance section of the README. - Portable, safe implementations for other platforms.
- Dynamic CPU feature detection. Binaries include multiple implementations by default and choose the fastest one the processor supports at runtime.
- All the features from the the BLAKE2 spec, like adjustable length, keying, and associated data for tree hashing.
no_std
support. Thestd
Cargo feature is on by default, for CPU feature detection and for implementingstd::io::Write
.- Support for computing multiple BLAKE2s hashes in parallel, matching the efficiency of
BLAKE2sp. See the
many
module.
Example
use blake2s_simd::{blake2s, Params};
let expected = "08d6cad88075de8f192db097573d0e829411cd91eb6ec65e8fc16c017edfdb74";
let hash = blake2s(b"foo");
assert_eq!(expected, &hash.to_hex());
let hash = Params::new()
.hash_length(16)
.key(b"Squeamish Ossifrage")
.personal(b"Shaftoe")
.to_state()
.update(b"foo")
.update(b"bar")
.update(b"baz")
.finalize();
assert_eq!("28325512782cbf5019424fa65da9a6c7", &hash.to_hex());
Modules
BLAKE2sp, a variant of BLAKE2s that uses SIMD more efficiently.
Interfaces for hashing multiple inputs at once, using SIMD more
efficiently.
Structs
A finalized BLAKE2 hash, with constant-time equality.
A parameter builder that exposes all the non-default BLAKE2 features.
An incremental hasher for BLAKE2s.
Constants
The number input bytes passed to each call to the compression function. Small benchmarks need
to use an even multiple of
BLOCKBYTES
, or else their apparent throughput will be low.The max key length.
The max hash length.
The max personalization length.
The max salt length.
Functions
Compute the BLAKE2s hash of a slice of bytes all at once, using default
parameters.