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

时间:2015-01-05 15:29:48

标签: algorithm hash

我试图找到或提出一种算法,该算法对输入执行散列以生成两个或三个单词的输出。

例如:

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

    算法需要

    1. 始终为同一输入生成相同的结果
    2. 碰撞概率很低,但它不需要是严格的“真实”哈希
    3. 重新创建输入有一定的困难,但它不需要像“真正的”哈希一样严格

我有一个想法是使用普通的哈希函数来创建哈希值,然后使用前几个字符来选择单词:

  • “ABCD” - > “2fd4e1c ......” - > {“2fd”:“tree”,“4e1”:“blue”}

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

1 个答案:

答案 0 :(得分:2)

对于小于 2 -k 的碰撞概率,您希望大约 2 2k 位由birthday paradox引起的熵。这样可以粗略估计字典中对于给定数量的单词需要多少单词,反之亦然。

您建议的方法看起来很合理:使用一个好的标准哈希函数,然后,对于大小 n 的字典,只需使用第一个 log 2 ( n)第一个字的散列的位,第二个字的下一个 log 2 (n)位。