Expand description
An implementation of the SHA-3 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 readme.
Re-exports§
pub use digest;
Structs§
- Core CSHAKE128 hasher state.
- Core CSHAKE128 reader state.
- Core CSHAKE256 hasher state.
- Core CSHAKE256 reader state.
- Core Keccak-224 hasher state.
- Core Keccak-256 hasher state.
- Core SHA-3 CryptoNight variant hasher state.
- Core Keccak-384 hasher state.
- Core Keccak-512 hasher state.
- Core SHA-3-224 hasher state.
- Core SHA-3-256 hasher state.
- Core SHA-3-384 hasher state.
- Core SHA-3-512 hasher state.
- Core SHAKE128 hasher state.
- Core SHAKE128 reader state.
- Core SHAKE256 hasher state.
- Core SHAKE256 reader state.
- Core TurboSHAKE128 hasher state.
- Core TurboSHAKE128 reader state.
- Core TurboSHAKE256 hasher state.
- Core TurboSHAKE256 reader state.
Traits§
- Convenience wrapper trait covering functionality of cryptographic hash functions with fixed output size.
Type Aliases§
- CSHAKE128 hasher state.
- CSHAKE256 hasher state.
- CSHAKE128 reader state.
- CSHAKE256 reader state.
- Keccak-224 hasher state.
- Keccak-256 hasher state.
- Keccak-384 hasher state.
- Keccak-512 hasher state.
- SHA-3 CryptoNight variant hasher state.
- SHA-3-224 hasher state.
- SHA-3-256 hasher state.
- SHA-3-384 hasher state.
- SHA-3-512 hasher state.
- SHAKE128 hasher state.
- SHAKE256 hasher state.
- SHAKE128 reader state.
- SHAKE256 reader state.
- TurboSHAKE128 hasher state.
- TurboSHAKE256 hasher state.
- TurboSHAKE128 reader state.
- TurboSHAKE256 reader state.