如何编辑文件以更改md5哈希而不损坏



我需要复制各种类型的文件类型,对它们进行一些更改,使原始的md5哈希与修改后的不匹配,但要保持它们的可读性且不损坏。

TXT文件——这是显而易见的。我只是在文件末尾添加一个随机字符串。

PDF文件-我开始寻找一个java库来编辑PDF文件,但后来我不小心试图在notepad++中打开一个PDF文件,我想-为什么我不尝试在我看到的不可读内容的末尾添加一个随机字符串呢。好吧,令我惊讶的是,它起了作用,而且文件没有损坏。

ZIP文件-我尝试过与pdf相同的方法,它也起作用。

DOCX-同样的方法在这里停止了工作。在我在文本编辑器中打开的docx文件的二进制内容末尾只添加一个空格("),会损坏该文件。

所以我需要的是:

  1. 用于修改office文档的java库:doc、docx、xls、xlsx、ppt、pptx。

  2. 仍然有一些文件类型需要更改md5哈希输出,但我认为它们在java媒体文件中是不可修改的,例如可执行文件等。。那么,无论如何,我该如何对这些文件执行我想要的操作呢?有没有一种方法可以直接"触摸"文件,更改标题或其他内容,使其与未经修改的文件不相同?

编辑:好吧,动机是这样的——我想生成大量的数据,正如我在这里所问的:如何生成大量数据?

在提出那个问题的时候,我得到的答案已经足够了,但还不够。

  1. 我需要数据不相同。文件对必须通过md5哈希测试。

  2. 我不能只生成随机字符串,因为我需要模拟真实的文件和文档。

  3. 我不能使用现有的数据转储,因为我需要各种大小的数据集,包括各种文件类型。我需要一些东西,我会给一个输入大小,它会为我生成数据。

所以我想我应该使用一个包含我最终需要的所有文件类型的起始数据集,并且只复制这个数据集。

  1. 用于修改office文档的java库:doc、docx、xls、xlsx、ppt、pptx

Apache POI用于修改MS Office文件。请注意,较新的格式(xlsxdocx等)只是包含XML的ZIP文件。解压缩它们并修改纯文本XML也可以

ZIP文件也有同样的建议:尝试解压缩和修改最简单的文件。

但你到底想实现什么呢?请注意,在文件末尾随机附加一些字符串只是偶然的。在其他计算机或其他版本的软件上,该文件可能被认为已损坏。。。

我建议您要么在文件外部存储一些元数据,而不是比较MD5,要么深入研究文件格式。文件中几乎总是隐藏着标题和各种元数据(MP3中的ID3标签、图像中的EXIF等)。相反,修改它要安全得多。

还要查找保留/未使用的字节——这是非常常见的。但再次-为什么你一开始就这么做吗?

最新更新