Playground for a siphash and hashtable implementation.
All components lie in the kvd namespace.
Components may have a nested kvd::internal namespace, for which no guarantees are made.
Based on the paper by Aumasson and Bernstein.
It uses a 128 Bit key, split into two 64 Bit integers k0 and k1 in little endian format.
Further, the function exposes the parameters c and d to realize SipHash-c-d, running c compressing rounds and d finalizing rounds. The provided standard values realize SipHash-4-2 as provided in the paper.
template<uint64_t k0, uint64_t k1, uint8_t c=2, uint8_t d=4>
uint64_t sip_hash(std::string s)
Catch2 as unit testing framework (available as submodule in lib/Catch2).