Encryption 寻找相似的散列
我试图找到两个不同的纯文本单词,它们可以创建非常相似的哈希 我使用的是“whirlpool”散列方法,但我并不需要在case或whirlpool中回答我的问题,如果你可以使用md5或其他更简单的方法就可以了 我要寻找的相似之处是,它们包含相同数量的字母(不管它们有多吵) i、 e 纯文本“测试” 散列1:abbb5有1个a,3个b,1个5 纯文本“blahblah” 散列2:b5bab必须具有相同的顺序,但与顺序无关 我相信我能读懂它们是如何被创造出来的,并将其分解和反转,但我只是想知道我所说的是否发生了Encryption 寻找相似的散列,encryption,hash,cryptography,whirlpool,Encryption,Hash,Cryptography,Whirlpool,我试图找到两个不同的纯文本单词,它们可以创建非常相似的哈希 我使用的是“whirlpool”散列方法,但我并不需要在case或whirlpool中回答我的问题,如果你可以使用md5或其他更简单的方法就可以了 我要寻找的相似之处是,它们包含相同数量的字母(不管它们有多吵) i、 e 纯文本“测试” 散列1:abbb5有1个a,3个b,1个5 纯文本“blahblah” 散列2:b5bab必须具有相同的顺序,但与顺序无关 我相信我能读懂它们是如何被创造出来的,并将其分解和反转,但我只是想知道我所说的
我很好奇,因为我还没有找到我所解释的匹配项(我创建了一个PoC来运行并抛出随机的单词/字母,直到它重新创建了一个类似的匹配项),但是再次强调,按照我原来的方式做这件事需要很长时间。我想知道是否有真正了解哈希/加密的人能帮我解决问题。所以你可以这样做:
- 如果是,则显示十六进制结果、映射中的旧计数器和当前计数器(并停止)
- 如果不是,则将排序后的十六进制结果放入映射中,并将计数器作为值
我不知道你为什么要这样做十六进制,散列将是如此之大,他们看起来不会太像。如果你的字母表更小,你的代码运行(甚至)更快。如果使用整个输出字节(即
00
到FF
而不是0
到F
)而不是十六进制,则需要花费更多的时间-快速(非优化)在我的机器上进行的测试表明,它不会在几分钟内完成,然后会耗尽内存。定义一个新的哈希函数,该函数首先应用原始哈希,然后对输出中的字符进行排序。然后将标准的碰撞查找算法应用于这个新函数,它的输出空间更小,因此碰撞更常见。但是我认为减少的幅度不是很大,所以它仍然只适用于短散列,可能最多12个字节左右。从问题中的示例来看,它必须是相同数量的相同字母和数字。是这样吗?@CodesInChaos如果您使用较小的字母表,例如0和1,那么可能可以用于完整哈希:P@CodesInChaos令人惊讶的是,在SHA-1:)中只对429678个十六进制进行了比较:01112344466778889999aaabbbccccddeeeefff用于320324和429678(输入=64位长,包括初始零位)如果对字节执行此操作,则在线程“main”java.lang.OutOfMemoryError中会出现异常:超出了GC开销限制。我想知道是否会发生这种情况……弱ass笔记本电脑:#本机内存分配(malloc)无法分配312737792字节以提交保留内存。