0

是否有任何消息摘要算法可以在摘要上应用集合函数并且结果仍然有意义?换句话说,是否有一个散列函数在散列之前和之后打破“集合”的概念?

我正在寻找一个哈希函数:

  1. 将一组数据散列成一个固定长度(或有界长度)的字符串
  2. 如果输入数据集相同,则产生相同的哈希
  3. 如果您选择原始数据的子集,则相当于对数据子集进行哈希处理,或者将子集应用于原始数据集的哈希,即您将在两种方式中获得相同的子集哈希。

例如,在下图中,A 有几个数据点(红色菱形)。B 是 A 的子集。是否存在这样的哈希函数:

A中的数据----哈希函数---->_hashA----设置操作---->_hashB

B中的数据----哈希函数----> _hashB

在此处输入图像描述

4

3 回答 3

1

这看起来有点像http://en.wikipedia.org/wiki/Homomorphic_encryption有点像http://en.wikipedia.org/wiki/Differential_privacy这样的数据库隐私方案——至少对我来说是这样。

在这两种情况下,开发人员都遇到了问题,因为事实证明,一旦您让用户做一些事情,他们就会找到聪明的方法来解决如何使用这些事情作为构建块来做他们想做的任何事情,因此系统根本没有任何安全性。

在你的情况下,我认为你想要 AndHash(hash(a), hash(b)) = hash(a and b)。这意味着如果 hash(a) != hash(null set) 那么我可以根据该集合的哈希值找出 a 是否是任何集合的成员。如果这种情况经常发生,我可以在给定哈希值的情况下计算出哈希集的许多成员,这意味着哈希值必须与集合一样大,因为它包含其中的所有信息。

根据您想要的目的,可能值得查看http://en.wikipedia.org/wiki/Minhash

于 2013-07-20T04:41:46.437 回答
0

AFAIK,不。散列函数通常(我见过很多)对单个数据块进行操作,而不考虑该数据可能实际表示的内容,主要关注的是减少冲突的可能性。也就是说,当然有可能想出你想要做的事情,但我想这将非常困难,而且结果很可能在避免碰撞方面不是最理想的。

于 2013-07-20T01:06:38.977 回答
0

简短的回答是否定的,没有这样的算法。您可能会尝试加密您的数据,然后在需要应用您的设置功能时对其进行解密,然后再次对其进行加密。然而,散列算法本质上是一种方式,并且涉及数据丢失。这里有一个很好的解释散列和加密算法之间的区别:散列和加密算法之间的基本区别

于 2013-07-20T01:07:47.033 回答