是否有满足以下条件的哈希函数

时间:2018-12-17 12:44:10

标签: c++ algorithm math hash cryptography

是否存在满足以下条件的哈希算法?

let "hash_funct" be a hashing function that takes two args, and returns a hash value. so all the following will be true

Hash1 = hash_funct(arg1, arg2) <=> hash_funct(Hash1, arg1) = hash_funct(Hash1, arg2) = Hash1;

谁能指出我该算法?还是不存在,有人可以与我合作发明吗?

更多说明:

想象一组S={A,B,C,D},以及上面的哈希函数。

如果我们可以做Hash1 = hash_funct(A,B,C,D),那么我们可以通过检查X的哈希结果来检查元素hash_funct(Hash1,X) == Hash1 ? belogns to the set : doesn't belong是否在集合中

使用此属性,我们检查集合O(1)中元素的存在,而不是O(NlogN)

2 个答案:

答案 0 :(得分:2)

我想最高公因数( Hcf )将适合此处。设a和b为两个数字,其中x为最大公因数。

hcf(a,b) = x.

这表示a = x*mb = x*n。这显然意味着:

hcf(x,x*m) = hcf(x,x*n) = hcf(x*n,x*m) = x

答案 1 :(得分:2)

您要寻找的是Accumulators。目前,它们在digital coins @youtube

中非常受欢迎

来自维基百科;

  

密码累加器是单向隶属函数。它回答了有关潜在候选人是否是集合的成员的查询,而没有透露集合的各个成员。

例如,这个paper;

  

我们展示了如何使用RSA单向累加器来实现高效且动态的经过身份验证的字典,其中不受信任的目录提供了可加密验证的答案   对由可信来源维护的集合上的成员资格查询

基于直接累加器的方案;

  • 查询:要求提供会员资格证明时。
  • 验证:检查答案的有效性。
  • 更新:插入和删除

可用。