从这个页面看来,您每秒可以进行 50 亿次哈希。这是否意味着不难造成碰撞?如果我想创建一个具有特定 MD5 或 SHA1 的文件,需要多长时间?
根据我的数学(使用 2^160),它仍然需要很长时间,但据我所知,暴力破解 160 位 sha1 哈希并不是 2^160
从这个页面看来,您每秒可以进行 50 亿次哈希。这是否意味着不难造成碰撞?如果我想创建一个具有特定 MD5 或 SHA1 的文件,需要多长时间?
根据我的数学(使用 2^160),它仍然需要很长时间,但据我所知,暴力破解 160 位 sha1 哈希并不是 2^160
如果每秒 50 亿个哈希值是真的,这意味着您可以在大约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 碰撞。不要问我他们是如何做到这一点的,但这里有一个例子:
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)
. 或者,更好的是,您为每个用户使用不同的盐,因此没有人甚至可以看到哪些用户共享相同的密码。
这里的结论:请注意,即使您无法反转哈希,您仍然可以查找一个,这对于像上面这样的未加盐的哈希来说很容易。
黑客电影及其行为通常依赖于暴力破解。但这根本不是事实!