#include #include #include #include "mod311.h" uint32_t hash311_seed(void) { return arc4random_uniform(M31); } uint32_t hash311(uint32_t seed, const void *buf, size_t len) { const uint32_t x = seed; const uint8_t *p = buf; uint32_t y = 0; while (len --> 0) y = mul311(x, add311(y, 0x100 | *p++)); return reduce311(y); }