Algorithm 是否存在从输入生成单词的伪哈希函数?

Algorithm 是否存在从输入生成单词的伪哈希函数?,algorithm,hash,Algorithm,Hash,我试图找到或想出一种算法,对输入执行哈希运算,生成两个或三个单词的输出 例如: “ABCD”->“树蓝” “WXYZ”->“好奇的橡子” 算法需要 始终为相同的输入生成相同的结果 具有较低的冲突概率,但不需要像“真实”散列那样严格 重新创建输入有一定的难度,但不需要像“真实”散列那样严格 我的一个想法是使用普通哈希函数创建哈希值,然后使用前几个字符选择单词: “ABCD”->“2fd4e1c…”-->{“2fd”:“树”,“4e1”:“蓝”} 但我不确定什么是好的查找算法(用于在我的表

我试图找到或想出一种算法,对输入执行哈希运算,生成两个或三个单词的输出

例如:

  • “ABCD”->“树蓝”
  • “WXYZ”->“好奇的橡子”

    算法需要

  • 始终为相同的输入生成相同的结果
  • 具有较低的冲突概率,但不需要像“真实”散列那样严格
  • 重新创建输入有一定的难度,但不需要像“真实”散列那样严格
我的一个想法是使用普通哈希函数创建哈希值,然后使用前几个字符选择单词:

  • “ABCD”->“2fd4e1c…”-->{“2fd”:“树”,“4e1”:“蓝”}

但我不确定什么是好的查找算法(用于在我的表中的所有单词之间进行均匀分布),以及这是否满足我的上述要求。

对于小于2-k的碰撞概率,您需要大约22k位的熵,因为。这会让你粗略估计出,对于给定数量的单词,你需要在字典中输入多少单词,反之亦然


您建议的方法看起来不错:使用一个好的标准哈希函数,然后,对于大小为n的字典,只需将哈希的第一个log2(n)位用于第一个单词,下一个log2(n)位用于第二个单词等。

好的,谢谢。看起来我肯定需要三个或更多的单词,除非我要导入一个巨大的库。好电话。