Available on little-endian only.
Expand description
§Keccak
§Notes
- In addition to NIST’s test data, this implementation has passed millions of sample hashes generated by OpenSSL.
- 8-bit machines are not supported.
§References
- Specifications: https://keccak.team/keccak_specs_summary.html
- Test data: https://csrc.nist.gov/projects/cryptographic-standards-and-guidelines/example-values
§Examples
use zeros::keccak::Hash;
let mut keccak = Hash::Shake128.new_keccak();
keccak.update("test");
assert_eq!(
keccak.finish(),
&[
0xd3, 0xb0, 0xaa, 0x9c, 0xd8, 0xb7, 0x25, 0x56,
0x22, 0xce, 0xbc, 0x63, 0x1e, 0x86, 0x7d, 0x40,
],
);
§Pseudorandom byte generator
use zeros::keccak::Hash;
let mut keccak_x = Hash::Shake256.make_unlimited_keccak_x([
"This is just an example.",
"You should feed it data from some secure source,",
"such as /dev/urandom",
])?;
assert_eq!(keccak_x.size_hint(), (usize::MAX, Some(usize::MAX)));
// Now read some bytes
let number = keccak_x.next_u64();
// For what we feed above, we'll always get `0x_0f68_60c9_b7c2_cde6`
assert_eq!(number, 0x_0f68_60c9_b7c2_cde6);
// Check its size again
assert_eq!(keccak_x.size_hint(), (usize::MAX, Some(usize::MAX)));
Structs§
- HashReader
std
Hash Reader - HashWriter
std
Hash Writer - Keccak
- KeccakX
Enums§
- Hash functions
- Type of
Keccak
- Type of
KeccakX