【发布时间】:2011-12-28 15:13:00
【问题描述】:
我不知道实际的数学术语(多对一映射是我使用的术语)
这是我的要求:
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 中传递的一个元素
这种散列函数的名称是什么?一个哈希应该能够映射到多个元素(不是冲突)。
【问题讨论】:
-
这是个好问题!任何解决方案都可能涉及某种形式的homomorphic encryption,因此如果没有对此的 OOTB 实现,最好将其迁移到 crypto.SE。
-
您需要一个不可逆且安全的真正哈希函数吗?
-
我不知道它们是如何被调用的,但我会称它们为“设置枚举哈希函数”。为每个元素取一个素数并将它们相乘(有多少可能的元素?)似乎是合乎逻辑的。 (对每个可能的元素都有一个特殊的私有哈希值称为 Zobrist 哈希,顺便说一句)
-
@Warren:我不需要真正的哈希。散列函数可以映射到 n 个以上的元素(但冲突不应该很高)。单向或双向散列也没有限制。安全不是问题。
-
@Wildpasser:最多可以有 1000 个元素(甚至更多),每个元素大小为 16 个字节。我不明白你乘以素数的想法。我的函数
hash_function和is_valid_hash应该在不同的机器上,所以我无法维护通用哈希表
标签: hash one-to-many many-to-one hash-function