хэш-функция сопоставления "многие к одному" - PullRequest
3 голосов
/ 28 декабря 2011

Я не знаю фактического математического термина (многозначное сопоставление - это терминология, которую я использовал)

Это мое требование:

hash_code = hash_function(element 1, element 2, ...... element n)

я должен быть в состоянии получить

bool b = is_valid_hash(hash_code, element x)

функция is_valid_hash должна указывать мне погоду 'element x' был элементом, переданным в hash_function

Как называются такие хэш-функции? Один хеш должен иметь возможность отображать несколько элементов (не столкновение).

Ответы [ 2 ]

1 голос
/ 29 декабря 2011
0 голосов
/ 28 декабря 2011

Предполагая, что hash_function является стандартным алгоритмом хеширования (md5 и т. Д.), Этого сделать нельзя.Однако, если это пользовательская функция, вы можете сделать это одним из двух способов:

  1. hash_function () может хэшировать каждый элемент и затем объединять строки (это приведет к очень длинному хешу,и это было бы менее безопасно в некоторых отношениях, но это работало бы), и тогда вы могли бы выполнить сравнение подстроки в is_valid_hash () (посмотрите, является ли хешированный элемент x подстрокой hash_code.

  2. Аналогично, hash_function может возвращать массив хэшей ... если вам нужна строка или безопасность вызывает беспокойство, вы также можете возвратить двухсторонний зашифрованный сериализованный массив ... затем его можно расшифровать и не сериализовать вis_valid_hash (), и вы можете проверить, находится ли хэш элемента x в массиве.

...