寻找类似的哈希

时间:2015-03-04 08:22:47

标签: encryption hash cryptography whirlpool

我试图找到2个不同的纯文字,创造出非常相似的哈希值。

我正在使用哈希方法'漩涡'但是我真的不需要在案例或漩涡中回答我的问题,如果你可以使用md5或更简单的东西#39;没问题。

我所寻找的相似之处在于它们包含相同数量的字母(无论它们多少被重新组合)

即 明文'测试' hash 1:abbb5有1 a,3 b' s,5 明文' blahblah' 哈希2:b5bab必须具有相同的功能,但无论什么顺序都无关紧要。

我确信我可以阅读他们如何创建并分解并扭转它,但我只是想知道我所谈论的是否会发生。

我想知道因为我找不到我所解释的内容的匹配(我创建了一个PoC来运行随机单词/字母直到重新创建类似的匹配),但是又一次永远这样做会像我一样。并且想知道是否有真正了解哈希/加密的人会帮助我。

1 个答案:

答案 0 :(得分:2)

所以你可以这样做:

  1. 创建一个空的有序地图\
  2. 创建一个64位计数器(你很可能不需要超过2 ^ 63个输入,因为在你计算它们之前就已经死了 - 除非量子加密真的起飞)
  3. 使用计数器作为输入,可能最容易用8字节编码;
  4. 将此作为哈希函数的输入;
  5. 以十六进制编码哈希输出(使用ASCII字节,速度);
  6. 按数字/字母顺序排列十六进制(真的一样)
  7. 检查排序的十六进制结果是否是地图中的一个键
    • 如果是,则显示十六进制结果,来自地图的旧计数器&当前的计数器(并停止)
    • 如果不是,请将已排序的十六进制结果放在地图中,并将计数器作为值
  8. 增加计数器,转到3
  9. 这就是所有人。 SHA-1的结果:

      

    011122344667788899999aaaabbbcccddeeeefff for 320324和429678

    我不知道为什么你要为十六进制做这个,哈希会很大,以至于看起来不太相似。如果您的字母表较小,您的代码将更快地运行(甚至)。如果您使用整个输出字节(即00FF而不是0F)而不是十六进制,则需要更多时间 - 快速(非优化) )在我的机器上测试表明它没有在几分钟内完成,然后耗尽内存。