多对一哈希函数

问题描述 投票:0回答:1

我不知道该怎么称呼它,这是我能想到的最接近的东西

我正在寻找的是一个函数,它接受一个字符串数组并返回一个哈希字符串,如下所示

const inputs = [str_1, str_2 ...... str_n]

const hash = generate_hash(inputs)

然后另一个函数接受 2 个参数,即先前生成的哈希值和随机字符串,如果提供的字符串是用于生成哈希值的输入数组的成员,则返回 true 或 false

const random_str = "random"

const is_in_inputs = check_str(hash, random_str)

这甚至可能是具有多个密钥的加密算法,并且只有这些密钥才能解密加密的字符串

我不关心安全之类的事情,我只想要能完成工作的东西

如果这样的事情已经存在,那么请为我指明正确的方向,如果不存在,请告诉我如何实现它

hash cryptography hashcode
1个回答
0
投票

您正在寻找的东西称为“布隆过滤器”。它永远不会返回误报(即,如果它说“随机”不在哈希中,则它不是),但我可以返回误报。 所有执行此操作的固定大小结构都将是概率性的。他们要么出现误报,要么出现误报。 (您可以在没有误报的情况下获得误报

只需将其设置为缓存而不是散列

。)使其完全确定性(没有错误结果)的唯一方法是让它无限制地增长。最明显的实现是让 generate_hash 明确编码所有元素(例如序列化为长度值),然后对结果进行 gzip。但这不再是“哈希”。这只是一种编码。

如果可以在固定空间中做到这一点,你可以用它来无限压缩数据,这是不可能的。就像这个领域的许多事物一样,

鸽巢原理

阻止了我们。

© www.soinside.com 2019 - 2024. All rights reserved.