3

这个页面看来,您每秒可以进行 50 亿次哈希。这是否意味着不难造成碰撞?如果我想创建一个具有特定 MD5 或 SHA1 的文件,需要多长时间?

根据我的数学(使用 2^160),它仍然需要很长时间,但据我所知,暴力破解 160 位 sha1 哈希并不是 2^160

4

1 回答 1

0

如果每秒 50 亿个哈希值是真的,这意味着您可以在大约45 211 226 851 851 851 851 852 年中创建/“反转”一个哈希值 (所以你最好在你还年轻的时候开始)

这个假设背后的数学

  • 一个 MD5 哈希有 2^128 种可能的组合
  • 每秒 50 亿表示秒数 = 2^128 / (5 * 10^9)
  • 大约是 10^30 秒
  • 大约是 45 211 226 851 851 851 851 852 年

结论:你将需要 3 万亿台计算机,从大爆炸开始——今天你将拥有 MD5 哈希值。

暴力破解和密码学

谈到密码学,暴力破解永远不是答案。一旦是,它仅仅意味着密码算法不够强大,即没有足够的比特。这发生在DES上,它有一个 56 位的密钥——这还不够。

另外,请注意,256 位不是 128 位的“双倍”!256 位实际上是 128 位量的 2^128 倍。

2^256 / 2^128 = 2^128

MD5 碰撞仍然是如何产生的!

因此,通过暴力破解,您永远不会去任何地方!不管你有多少台电脑。剩下的唯一选择就是用数学来攻击算法。

世界各地的加密分析师和数学家都对此进行了研究。

他们通过破解算法设法在合理的时间内创建了 MD5 碰撞。不要问我他们是如何做到这一点的,但这里有一个例子:

d131dd02c5e6eec4 693d9a0698aff95c 2fcab5 8 712467eab 4004583eb8fb7f89
55ad340609f4b302 83e4888325 7 1415a 085125e8f7cdc99f d91dbdf280373c5b
d8823e3156348f5b ae6dacd436c919c6 dd53e2 b 487da03fd 02396306d248cda0
e99f33420f577ee8 ce54b67080 a 80d1e c69821bcb6a88393 96f965 2 b6ff72a70

具有相同的 MD5

d131dd02c5e6eec4 693d9a0698aff95c 2fcab5 0 712467eab 4004583eb8fb7f89
55ad340609f4b302 83e4888325 f 1415a 085125e8f7cdc99f d91dbd7280373c5b
d8823e3156348f5b ae6dacd436c919c6 dd53e2 3 487da03fd 02396306d248cda0
e99f33420f577ee8 ce54b67080 2 80d1e c69821bcb6a88393 96f965 a b6ff72a70

一个缺陷:彩虹表

所以你不能反转哈希,但是有像md5cracker这样的彩虹表。他们有一个庞大的字符串数据库(通常是密码)及其哈希值。所以如果你使用一个简单的密码,你可以在那里查找哈希。

尝试查找此哈希:

5a8dd3ad0756a93ded72b823b19dd877

因此,如果您将密码的 MD5 存储在数据库中,向其中添加盐是一个聪明的主意。例如,而不是md5(password)您存储md5("salt1234" + password). 或者,更好的是,您为每个用户使用不同的盐,因此没有人甚至可以看到哪些用户共享相同的密码。

这里的结论:请注意,即使您无法反转哈希,您仍然可以查找一个,这对于像上面这样的未加盐的哈希来说很容易。

黑客电影及其行为通常依赖于暴力破解。但这根本不是事实!

于 2015-03-19T18:08:49.980 回答