3

我不知道实际的数学术语(多对一映射是我使用的术语)

这是我的要求:

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

这种散列函数的名称是什么?一个哈希应该能够映射到多个元素(不是冲突)。

4

2 回答 2

1

我一直在寻找的是:布隆过滤器

于 2011-12-29T03:14:59.927 回答
0

假设 hash_function 是标准的散列算法(md5 等),这是无法做到的。但是,如果它是自定义函数,您可以通过以下两种方式之一进行:

  1. hash_function() 可以散列每个元素,然后连接字符串(这会产生一个很长的散列,并且在某些方面会不太安全,但它会起作用),然后你可以对 is_valid_hash( ) (查看散列元素 x 是否是 hash_code 的子串。

  2. 类似地,hash_function 可以返回一个哈希数组...如果您需要一个字符串或需要考虑安全性,您还可以返回一个 2 路加密的序列化数组...然后可以在 is_valid_hash() 中解密和反序列化,然后您可以检查元素 x 哈希是否在数组中。

于 2011-12-28T15:19:56.833 回答