#crypto #hash #digest #shabal

no-std shabal

Shabal hash functions

5 releases (3 breaking)

0.4.1 Feb 17, 2022
0.4.0 Dec 7, 2021
0.3.0 Jun 12, 2020
0.2.0 Feb 26, 2019
0.1.0 Feb 25, 2019

#73 in Cryptography

Download history 4069/week @ 2022-06-12 3806/week @ 2022-06-19 4104/week @ 2022-06-26 4518/week @ 2022-07-03 2131/week @ 2022-07-10 2351/week @ 2022-07-17 2551/week @ 2022-07-24 3341/week @ 2022-07-31 3129/week @ 2022-08-07 1931/week @ 2022-08-14 4401/week @ 2022-08-21 3238/week @ 2022-08-28 3043/week @ 2022-09-04 2824/week @ 2022-09-11 3610/week @ 2022-09-18 3456/week @ 2022-09-25

13,049 downloads per month
Used in 5 crates

MIT/Apache

21KB
342 lines

RustCrypto: Shabal

crate Docs Apache2/MIT licensed Rust Version Project Chat Build Status

Pure Rust implementation of the Shabal cryptographic hash algorithm.

Documentation

About

There are 5 standard algorithms specified in the Shabal standard:

  • Shabal192, which is the Shabal algorithm with the result truncated to 192 bits
  • Shabal224, which is the Shabal algorithm with the result truncated to 224 bits
  • Shabal256, which is the Shabal algorithm with the result truncated to 256 bits.
  • Shabal384, which is the Shabal algorithm with the result truncated to 384 bits.
  • Shabal512, which is the Shabal algorithm with the result not truncated.

There is a single Shabal algorithm. All variants have different initialisation and apart from Shabal512 all truncate the result.

Usage

use shabal::{Shabal256, Digest};

// create a Shabal256 hasher instance
let mut hasher = Shabal256::new();

// process input message
hasher.input(b"helloworld");

// acquire hash digest in the form of GenericArray,
// which in this case is equivalent to [u8; 32]
let result = hasher.result();
assert_eq!(result[..], hex!("d945dee21ffca23ac232763aa9cac6c15805f144db9d6c97395437e01c8595a8"));

Minimum Supported Rust Version

Rust 1.41 or higher.

Minimum supported Rust version can be changed in the future, but it will be done with a minor version bump.

SemVer Policy

  • All on-by-default features of this library are covered by SemVer
  • MSRV is considered exempt from SemVer as noted above

License

Licensed under either of:

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~290KB