Module zeros::keccak

source ·
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

§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§

Enums§