Name Description Size
lib.rs An implementation of the [SHA-3][1] cryptographic hash algorithms. There are 6 standard algorithms specified in the SHA-3 standard: * `SHA3-224` * `SHA3-256` * `SHA3-384` * `SHA3-512` * `SHAKE128`, an extendable output function (XOF) * `SHAKE256`, an extendable output function (XOF) * `Keccak224`, `Keccak256`, `Keccak384`, `Keccak512` (NIST submission without padding changes) Additionally supports `TurboSHAKE`. # Examples Output size of SHA3-256 is fixed, so its functionality is usually accessed via the `Digest` trait: ``` use hex_literal::hex; use sha3::{Digest, Sha3_256}; // create a SHA3-256 object let mut hasher = Sha3_256::new(); // write input message hasher.update(b"abc"); // read hash digest let result = hasher.finalize(); assert_eq!(result[..], hex!(" 3a985da74fe225b2045c172d6bd390bd855f086e3e9d525b46bfe24511431532 ")[..]); ``` SHAKE functions have an extendable output, so finalization method returns XOF reader from which results of arbitrary length can be read. Note that these functions do not implement `Digest`, so lower-level traits have to be imported: ``` use sha3::{Shake128, digest::{Update, ExtendableOutput, XofReader}}; use hex_literal::hex; let mut hasher = Shake128::default(); hasher.update(b"abc"); let mut reader = hasher.finalize_xof(); let mut res1 = [0u8; 10]; reader.read(&mut res1); assert_eq!(res1, hex!("5881092dd818bf5cf8a3")); ``` Also see [RustCrypto/hashes][2] readme. [1]: https://en.wikipedia.org/wiki/SHA-3 [2]: https://github.com/RustCrypto/hashes 4839
macros.rs 15880
state.rs 1203