是否有任何消息摘要算法可以在摘要上应用集合函数,结果仍然有意义?换句话说,是否存在散列函数 NOT 在散列之前和之后打破“set”的概念?
我正在寻找一个哈希函数:
例如,在下面的图片集A中有几个数据点(红色dimonds)。 B是A的子集。是否有这样的哈希函数:
<----> A ----哈希函数中的数据----&gt; _hashA ----设置操作----&gt; _hashBB中的数据----哈希函数----&gt; _hashB
答案 0 :(得分:1)
这看起来有点像http://en.wikipedia.org/wiki/Homomorphic_encryption,有点像数据库隐私方案,如http://en.wikipedia.org/wiki/Differential_privacy - 至少对我而言。
在这两种情况下,开发人员都遇到了问题,因为事实证明,一旦你让用户做了一些事情,他们就能找到聪明的方法来解决如何做任何他们想做的事情,使用这些东西作为构建块,这样系统就没有任何安全性了一点都不。
在你的情况下,我认为你想要AndHash(hash(a),hash(b))= hash(a和b)。这意味着如果hash(a)!= hash(null set),那么我可以根据该集合的哈希值找出a是否是任何集合的成员。如果发生这种情况很多,我可以根据散列值计算散列集的许多成员,这意味着散列值必须与集合一样大,因为它包含其中的所有信息。
根据您的需要,可能值得查看http://en.wikipedia.org/wiki/Minhash。
答案 1 :(得分:0)
AFAIK,没有。哈希函数通常(我已经看过很多)对单个数据块进行操作,而不考虑数据实际代表什么,主要关注的是降低碰撞概率。也就是说,当然有可能提出类似你想要做的事情,但我认为这将是非常困难的,并且结果在避免碰撞方面可能不是最理想的。
答案 2 :(得分:0)
简短的回答是否定的,没有这样的算法。您可能尝试加密数据,然后在需要应用set函数时对其进行解密,然后再对其进行加密。然而,散列算法本质上是一种方式,涉及数据丢失。这里对哈希算法和加密算法之间的区别有一个很好的解释:Fundamental difference between Hashing and Encryption algorithms