{"id":"bloom-double-hashing","text":"`_hashes()` uses Kirschner-Mitzenmacher double hashing from a single MD5 digest, producing k positions as `(h1 + i*h2) % m` without k independent hash functions","truth_value":"IN","source":"entries/2026/05/28/topic-bloom-filter-integration.md","source_url":"","source_hash":"","justifications":[],"dependents":[],"metadata":{"example":"def _hashes(self, item):\n    h1, h2 = hash(item), hash(item + \"_salt\")\n    return [(h1 + i * h2) % self._size for i in range(self._num_hashes)]"},"explanation":{"steps":[{"node":"bloom-double-hashing","truth_value":"IN","reason":"premise"}]}}