/* libmisc/hash.c - General-purpose hash utilities * * Copyright (C) 2024-2025 Luke T. Shumaker * SPDX-License-Identifier: AGPL-3.0-or-later */ #include /* djb2 hash */ void hash_init(hash_t *hash) { *hash = 5381; } void hash_write(hash_t *hash, void *dat, size_t len) { for (size_t i = 0; i < len; i++) *hash = (*hash * 33) + (hash_t)(((unsigned char *)dat)[i]); } /* utilities */ hash_t hash(void *dat, size_t len) { hash_t h; hash_init(&h); hash_write(&h, dat, len); return h; }