【问题标题】:Saving a MD5 hash of a text file into the same text file?将文本文件的 MD5 哈希保存到同一个文本文件中?
【发布时间】:2011-02-24 14:43:41
【问题描述】:

今天我读到了 MD5 哈希,想知道这是否可能。 似乎是一个递归问题...... 或者有什么解决办法?

【问题讨论】:

  • 这可能吗... md5(crap + x) == x ?就像在最后一页有自己的 MD5 信息的文档一样?
  • 是的,正如我所写,这在理论上是可能的 - 但要做到这一点需要大量的尝试和运气......你不能用一个构建这样的文档拍摄。

标签: c security md5 hash


【解决方案1】:

这是另一个技巧......

在文件开头保存Hash,计算MD5已经排除了那个区域,只有重要的数据。

"HashMD5 = Md5.ComputeHash(bytes, 382, bytes.Length - 382)"

所以它只计算数据区域的哈希(自定义数据结构从文件缓冲区中偏移量 382 开始)

-----------示例数据结构如下-----------

<StructLayout(LayoutKind.Sequential, Pack:=1, CharSet:=CharSet.Ansi)>
<Serializable()> Structure MyData
    Dim FileCheckSum() As Byte  '16 bytes HASh for file 'Config.bin'
    Dim Padding() As Byte        ' 0xFF x 20 bytes
    Dim RemoteDevice As RmtDevice

End Structure

开始使用“xxxx.FileSystem.WriteAllBytes()”将此 str 写入文件 config.bin

然后使用十六进制编辑器打开配置文件查找填充元素开始的位置(在我的情况下是 382)

稍后使用此编号作为偏移量来计算 MD5 而不是整个文件。这种方式对数据损坏几乎没有安全性。

注意!!- 只要结构元素/顺序/元素编号保持不变,填充起始位置保持不变。

为我工作..

在 .net 中测试

【讨论】:

    【解决方案2】:

    好吧,只要您填写 MD5 总和,文件就会更改并获得一个新的 MD5 - 所以:不,这是不可行的。从理论上讲,只是反复试验可能会导致文档包含自己的哈希值……但该文档可能会非常乱码并且不包含任何有意义的内容。

    但是在计算过程中可以用零(例如)填充 128 位。这个地方将保存 MD5 和,并且在稍后验证哈希时必须再次为零。

    【讨论】:

    • 附录:据我们所知是不可行的。很有可能未来的一些数学天才会设计出一种方法来快速构建这样一个文件。
    【解决方案3】:

    理论上,这是可能的:可能的文件内容是无限的,可能的哈希不是。在实践中,能够完成它意味着您在算法中发现了一个漏洞,从而使哈希对安全目的毫无用处。

    【讨论】:

      【解决方案4】:

      考虑任何散列并想象向其中添加一些随机文本。由于您可以添加无限数量的可能文本,但只有可能的哈希值数量有限 ,必须有可能产生散列的文本。问题只是您可能没有足够的资源来找到它。

      您可以尝试的是,是否有任何 MD5 散列值,在散列时为 yield themselves as a result(感谢 Francesco 提供的链接!):
      对于 MD5 散列的所有可能排列,创建散列并将结果与​​原始结果进行比较。

      【讨论】:

      • 也就是说,MD5哈希是否承认一个不动点?见stackoverflow.com/questions/235785/…
      • @Francesco:感谢您的链接,我已将其添加到答案中。
      • 我更多地考虑这些术语:md5(crap + x) == x?我的意思是一个包含其他内容的 .doc 以及末尾的 MD5 哈希信息。
      • @bakra:这就是我的答案第一段的全部内容。
      【解决方案5】:

      好吧,向文本添加 MD5 哈希会更改文本,从而更改 MD5 哈希。 无法计算包含要计算的 MD5 散列的文本的 MD5 散列。

      【讨论】:

        【解决方案6】:

        这是不可能的。

        但是你可以根据文件内容的hash重命名文件,在不改变hash的情况下附加信息。

        【讨论】:

          【解决方案7】:

          您必须从计算中排除哈希和。然后你已经使用了它,但是你不能将哈希朗姆酒添加到文件的末尾,期望它是正确的,或者如果你计算出新的 yu 的运行,它将总是以新的 MD5 哈希结束。进入一个永无止境的故事:)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-01-18
            • 2021-12-18
            • 2011-01-10
            • 2020-10-28
            • 2012-07-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多