gpt4 book ai didi

java - 生成具有六个前导零的 MD5 哈希

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:40:39 24 4
gpt4 key购买 nike

在 Advent of Code 中做一些 Java 编码练习题,遇到一个要求我找到最小的六位整数,结合 iwrupvqb 的前导字符串,生成 MD5以五个零开头的散列。

我使用 Apache DigestUtils.md5Hex 函数找到了这部分的答案,我只是强行通过 100000-999999 并将其与 iwrupvqb 组合,直到我得到一个以五个零开头的 MD5。

答案是 iwrupvqb346386 创建哈希:

0000045c5e2b3911eb937d9d8c574f09

现在它要我找到一个有六个前导零的。我一直在浏览 md5 算法如何工作的页面和页面,反转 MD5 等,但似乎无法找出方程格式的问题,这将帮助我确定如何根据使用的字符计算 MD5 .

我什至让这个循环运行大约 30 分钟 - 一个小时,看看它是否在六位数整数之外得到任何命中(因为显然没有与这个文本短语组合创建六个前导零)

我对十六进制一无所知,所以此时我只是在黑暗中拍照,整晚都在猜测数字组合并不是我的本事。除了练习之外,我不一定需要解决这个问题,但我很想知道更多关于这里发生的事情。 (是的,我知道 MD5 已被破解,我永远不会在生产中使用它)

最佳答案

这个问题只能通过暴力破解来解决。例如,这正是比特币中“工作量证明”的工作原理。加快速度的唯一方法是优化计算中的每个步骤。因此,比特币矿工已经转向专用硬件。他们没有做任何“特别”或“聪明”的事情,他们只是非常非常快地计算哈希值。

您只能优化代码并投入更多/更好的硬件。一组计算节点在这里也能很好地工作,这个问题适合并行处理(同样是比特币矿池)。

如果你有一个多核 CPU,一个简单的事情就是为每个 CPU 使用一个线程。应该线性加速(这可能仍然不够快)。

关于java - 生成具有六个前导零的 MD5 哈希,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34113514/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com