我不知道实际的数学术语(多对一的映射是我使用过的术语)
这是我的要求:
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
此类哈希函数的名称是什么?一个哈希应该能够映射到多个元素(而不是冲突)。
答案 0 :(得分:1)
我在寻找的是:Bloom Filter
答案 1 :(得分:0)
假设hash_function是标准的散列算法(md5等),则无法完成。但是,如果它是自定义函数,您可以通过以下两种方式之一来完成:
hash_function()可以散列每个元素,然后连接字符串(这会产生一个非常长的散列,在某些方面它会不那么安全,但它会起作用),然后你可以做一个子-string比较on_valid_hash()(查看散列元素x是否为hash_code的子字符串。
同样,hash_function可以返回一个哈希数组...如果你需要一个字符串或安全性是一个问题,你也可以返回一个双向加密的序列化数组...然后可以解密和反序列化在is_valid_hash()中你可以检查元素x哈希是否在数组中。