【发布时间】:2010-03-25 15:59:58
【问题描述】:
我当然知道可以创建具有特定大小的文件以及如何创建文件。但是是否可以创建具有一定大小和一定 MD5 指纹的文件?
【问题讨论】:
我当然知道可以创建具有特定大小的文件以及如何创建文件。但是是否可以创建具有一定大小和一定 MD5 指纹的文件?
【问题讨论】:
无法找到具有特定散列的文件是加密散列函数(如 md5)的定义属性之一。
虽然 md5 已被破坏,但这些破坏只允许您使用相同的哈希创建两个不同的文件(图像),但不能使用预先确定的哈希。
你想要的被称为前映像攻击,由于 md5 仍然没有破坏该攻击,你需要暴力破解。
这平均需要 264 (2128/2) 次散列操作,这远远超出了我们目前的计算机所能达到的水平。
维基百科也有一篇关于原像攻击的文章:
http://en.wikipedia.org/wiki/Preimage_attack
【讨论】:
只需使用给定的 MD5 哈希创建文件 difficult enough 即可,无需添加大小要求。
您可以尝试rainbow table,但这需要很长时间才能创建并需要大量内存来存储。
【讨论】:
理论上,是的。实际上,它很可能需要计算文件中所有 n 个字节的所有排列——简单粗暴的暴力破解。这意味着,这在任何合理的时间范围内都很难实现。
【讨论】:
MD5 是一种加密哈希算法。它存在的唯一意义在于,制作具有特定哈希值的文件并不容易。
话虽如此,研究人员最近发现了算法中的缺陷。 Wikipedia page上有一些信息。
【讨论】:
MD5 算法是不可逆的(一般来说)所以答案是否定的。当然,除非您知道某个字符串的 MD5 哈希值并将该字符串放入文件中。但我想这没有多大意义。
【讨论】:
您创建的每个文件都有一个一定的大小和一个一定的 MD5哈希值。
如果您想要预先确定的大小和 MD5 哈希,这实际上是不可能的(您必须计算所有可能输入的所有哈希)。
【讨论】: