【问题标题】:Comparing the MD5 results of split files against the MD5 of the whole将拆分文件的 MD5 结果与整体的 MD5 进行比较
【发布时间】:2011-04-06 12:08:11
【问题描述】:

我有一种情况,我有一个非常大的文件,我正在使用 linux“split”命令将其分成更小的部分。后来我使用 linux "cat" 命令将这些部分重新组合在一起。

不过,在此期间,我很好奇……

如果我在拆分之前在大文件上获得 MD5 指纹,然后在拆分命令产生的所有独立文件部分上获得 MD5 指纹,有没有办法获取独立指纹并以某种方式推断出它们部分的总和或平均值(或任何你喜欢的)等于单个大文件的指纹?

通过(非常)松散的例子......

bigoldfile.txt MD5 = 737da789
smallfile1.txt MD5 = 23489a89
smallfile2.txt MD5 = 1238g89d
smallfile3.txt MD5 = 01234cd7

someoperator(23489a89,1238g89d,01234cd7) = 737da789(原文件的指纹)

【问题讨论】:

    标签: split compare md5 average md5sum


    【解决方案1】:

    您可能无法做到这一点 - MD5 内部已经足够复杂,并且取决于实际数据以及“初始”哈希值。

    您可以改为生成“增量”散列 - 第一部分的散列、第一部分的散列和第二部分的散列等。

    【讨论】:

    • 谢谢。我正在尝试做的是根据原始文件验证部件的完整性(无需将所有部件重新组合在一起并对生成的合并文件执行 MD5)。也许 MD5 不是最好的方法?
    • @Joe:到底是什么问题?您不想创建合并文件,是吗?
    • 是的,我仍然需要所有部件。是的,我最终将使用“cat smallfile* >bigoldfile.txt”之类的内容从各个部分创建一个合并文件。该文件被分成几部分,以便将它们转移到 DVD 上。在刻录光盘之前,我想验证部分与整体的完整性。
    • @Joe:我明白了。是的,这是个问题。一种解决方案是编写一个程序,该程序将逐个读取这些文件并将数据输入 MD5 计算器 - 然后您无需重新创建文件。在 C、C++ 或 C# 中执行此操作并不难。
    • @sharptooth...谢谢。我希望有一个可以使用本机 linux 命令的解决方案,但我想这只是一厢情愿。感谢您的意见。
    【解决方案2】:

    不完全是,但下一个最好的方法是这样做: 猫文件部分1 文件部分2 | md5sum 或者 cat 文件部分* | md5sum

    确保以正确的顺序将它们重新组合在一起。 通过管道输出 cat ,您不必担心创建太大的组合文件。

    【讨论】:

      猜你喜欢
      • 2015-03-24
      • 2013-12-25
      • 1970-01-01
      • 1970-01-01
      • 2021-03-31
      • 1970-01-01
      • 2021-09-27
      • 2018-11-16
      • 1970-01-01
      相关资源
      最近更新 更多