генератор семейства хеш-функций в Python

Я ищу генератор семейства хеш-функций, который мог генерировать семейство хеш-функций, данных ряд параметров. Я не нашел никакой подобный генератор до сих пор. Есть ли способ сделать это с hashlib пакет?

Например, я хотел бы сделать что-то как:

h1 = hash_function(1)
h2 = hash_function(2)
...

и h1 и h2 были бы различные хеш-функции.

Для тех из Вас, кто мог бы знать об этом, я пытаюсь реализовать минимальный алгоритм хеширования для очень большого набора данных.

В основном у меня есть очень большой набор функций (100 миллионов к 1 миллиарду) для данного документа, и я должен создать 1 000 - 10 000 различных случайных перестановок для этого набора функций.

Я НЕ хочу создавать случайные перестановки явно так техника, которую я хотел бы использовать в следующем:

  1. генерируйте хеш-функцию h и рассмотрите это для двух индексов r и s
  2. r появляется прежде s в перестановке, если h(r) < h(s) и сделайте это для 100 - 1 000 различных хеш-функций.

Там кто-либо - известные библиотеки, которые я, возможно, пропустил? Или какой-либо стандартный способ генерировать семейства хеш-функций с Python, о котором Вы могли бы знать?

7
задан JJJ 3 May 2014 в 07:42
поделиться

1 ответ

Я бы просто сделал что-нибудь вроде (если вам не нужна потокобезопасность - нетрудно изменить, если вам ДЕЙСТВИТЕЛЬНО нужна потокобезопасность - и при условии, что это 32-разрядная версия Python):

import random

_memomask = {}

def hash_function(n):
  mask = _memomask.get(n)
  if mask is None:
    random.seed(n)
    mask = _memomask[n] = random.getrandbits(32)
  def myhash(x):
    return hash(x) ^ mask
  return myhash
6
ответ дан 7 December 2019 в 07:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: