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§
- CShake128
Core - Core CSHAKE128 hasher state.
- CShake128
Reader Core - Core CSHAKE128 reader state.
- CShake256
Core - Core CSHAKE256 hasher state.
- CShake256
Reader Core - Core CSHAKE256 reader state.
- Keccak224
Core - Core Keccak-224 hasher state.
- Keccak256
Core - Core Keccak-256 hasher state.
- Keccak256
Full Core - Core SHA-3 CryptoNight variant hasher state.
- Keccak384
Core - Core Keccak-384 hasher state.
- Keccak512
Core - Core Keccak-512 hasher state.
- Sha3_
224Core - Core SHA-3-224 hasher state.
- Sha3_
256Core - Core SHA-3-256 hasher state.
- Sha3_
384Core - Core SHA-3-384 hasher state.
- Sha3_
512Core - Core SHA-3-512 hasher state.
- Shake128
Core - Core SHAKE128 hasher state.
- Shake128
Reader Core - Core SHAKE128 reader state.
- Shake256
Core - Core SHAKE256 hasher state.
- Shake256
Reader Core - Core SHAKE256 reader state.
- Turbo
Shake128 Core - Core TurboSHAKE128 hasher state.
- Turbo
Shake128 Reader Core - Core TurboSHAKE128 reader state.
- Turbo
Shake256 Core - Core TurboSHAKE256 hasher state.
- Turbo
Shake256 Reader Core - Core TurboSHAKE256 reader state.
Traits§
- Digest
- Convenience wrapper trait covering functionality of cryptographic hash functions with fixed output size.
Type Aliases§
- CShake128
- CSHAKE128 hasher state.
- CShake256
- CSHAKE256 hasher state.
- CShake128
Reader - CSHAKE128 reader state.
- CShake256
Reader - CSHAKE256 reader state.
- Keccak224
- Keccak-224 hasher state.
- Keccak256
- Keccak-256 hasher state.
- Keccak384
- Keccak-384 hasher state.
- Keccak512
- Keccak-512 hasher state.
- Keccak256
Full - SHA-3 CryptoNight variant hasher state.
- Sha3_
224 - SHA-3-224 hasher state.
- Sha3_
256 - SHA-3-256 hasher state.
- Sha3_
384 - SHA-3-384 hasher state.
- Sha3_
512 - SHA-3-512 hasher state.
- Shake128
- SHAKE128 hasher state.
- Shake256
- SHAKE256 hasher state.
- Shake128
Reader - SHAKE128 reader state.
- Shake256
Reader - SHAKE256 reader state.
- Turbo
Shake128 - TurboSHAKE128 hasher state.
- Turbo
Shake256 - TurboSHAKE256 hasher state.
- Turbo
Shake128 Reader - TurboSHAKE128 reader state.
- Turbo
Shake256 Reader - TurboSHAKE256 reader state.