能否创建一个指定大小和MD5哈希值的文件?

7

当然,我知道可以创建一个指定大小的文件,以及如何创建。但是,是否可以创建一个既有指定大小又有特定MD5指纹的文件呢?

6个回答

4

即使不考虑文件大小的要求,仅仅创建一个指定MD5哈希值的文件已经足够困难

你可以尝试使用彩虹表,但这需要很长时间来创建和大量的内存来存储。


4
无法通过哈希值找到文件是密码哈希函数(例如md5)的定义特性之一。
虽然md5已经被破解,但这些破解只允许您创建两个具有相同哈希值的不同文件(图像),而不是具有预定哈希值的文件。
您想要的是所谓的预映像攻击,由于md5在此攻击方面仍未被破解,因此需要使用暴力破解。
这需要平均2的64次方(2的128/2次方)散列操作,远远超出我们目前计算机的能力范围。
维基百科也有一篇关于预映像攻击的文章:
http://en.wikipedia.org/wiki/Preimage_attack

3
理论上是可以的,但实际上很可能需要计算文件中所有 n 字节的所有排列组合,也就是说,需要使用暴力破解。这意味着在任何合理的时间范围内几乎不可能完成。

2
这并不完全正确。如果文件的大小显著大于哈希值的大小,则不太可能需要迭代所有n字节的排列组合。 - recursive

3

MD5是一种密码哈希算法。其唯一的存在意义在于不容易制作具有特定哈希值的文件。

话虽如此,研究人员最近发现了该算法的缺陷。关于此问题,在维基百科页面上有一些信息。


2

MD5算法通常来说是不可逆的,所以答案是否定的。除非你知道某个字符串的MD5哈希值,并将该字符串放入文件中。但我猜这没有太多意义。


1
每个你创建的文件都会有特定的大小和特定的 MD5 哈希值。
如果你想要预先确定的大小和 MD5 哈希值,这在实际上是不可能的(你需要计算所有可能输入的哈希值)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接