Name Description Size Coverage
buffer.rs A highly optimized version of SeaHash. 13489 -
helper.rs Helper functions. 4493 -
impl_std.rs 830 -
lib.rs 8226 -
reference.rs A slow, but clear reference implementation of SeaHash. # Specification The input buffer is padded with null bytes until the length is divisible by 8. We start out with state ```notest a = 0x16f11fe89b0d677c b = 0xb480a793d8e6c86c c = 0x6fe2e5aaf078ebc9 d = 0x14f994a4c5259381 ``` If a seed is given, each of the initial state component are modularly multiplied by the seed. From the stream, we read one 64-bit block (in little-endian) at a time. This number, `n`, determines the new state by: ```notest a' = b b' = c c' = d d' = g(a ⊕ n) ``` `g(x)` is defined as `g(x) = j(h(j(x)))` with `h(x) = (x ≫ 32) ≫ (x ≫ 60)` and `j(x) ≡ px (mod 2^64)` with `p = 0x7ed0e9fa0d94a33`. Let the final state be `(x, y, z, w)`. Then the final result is given by `H = g(x ⊕ y ⊕ z ⊕ w ⊕ l)` where `l` is the number of bytes in the original buffer. 4311 -
stream.rs 9958 -