【问题标题】:Is it possible to create a file with a given size and MD5 hash?是否可以创建具有给定大小和 MD5 哈希的文件?
【发布时间】:2010-03-25 15:59:58
【问题描述】:

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

【问题讨论】:

    标签: c# security hash


    【解决方案1】:

    无法找到具有特定散列的文件是加密散列函数(如 md5)的定义属性之一。

    虽然 md5 已被破坏,但这些破坏只允许您使用相同的哈希创建两个不同的文件(图像),但不能使用预先确定的哈希。

    你想要的被称为前映像攻击,由于 md5 仍然没有破坏该攻击,你需要暴力破解。

    这平均需要 264 (2128/2) 次散列操作,这远远超出了我们目前的计算机所能达到的水平。

    维基百科也有一篇关于原像攻击的文章:
    http://en.wikipedia.org/wiki/Preimage_attack

    【讨论】:

      【解决方案2】:

      只需使用给定的 MD5 哈希创建文件 difficult enough 即可,无需添加大小要求。

      您可以尝试rainbow table,但这需要很长时间才能创建并需要大量内存来存储。

      【讨论】:

        【解决方案3】:

        理论上,是的。实际上,它很可能需要计算文件中所有 n 个字节的所有排列——简单粗暴的暴力破解。这意味着,这在任何合理的时间范围内都很难实现。

        【讨论】:

        • 这不是真的。如果文件的大小明显大于散列的大小,则不可能遍历所有 n 字节的排列。
        【解决方案4】:

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

        话虽如此,研究人员最近发现了算法中的缺陷。 Wikipedia page上有一些信息。

        【讨论】:

          【解决方案5】:

          MD5 算法是不可逆的(一般来说)所以答案是否定的。当然,除非您知道某个字符串的 MD5 哈希值并将该字符串放入文件中。但我想这没有多大意义。

          【讨论】:

            【解决方案6】:

            您创建的每个文件都有一个一定的大小和一个一定的 MD5哈希值。

            如果您想要预先确定的大小和 MD5 哈希,这实际上是不可能的(您必须计算所有可能输入的所有哈希)。

            【讨论】:

              猜你喜欢
              • 2010-12-01
              • 1970-01-01
              • 2017-07-26
              • 2019-08-27
              相关资源
              最近更新 更多