更改文件的哈希值

时间:2010-07-13 16:28:10

标签: scripting hash binaryfiles

我有一个充满二进制文件的文件夹,我想对这些文件进行更改,以便这些文件的哈希值会发生变化。我想这样做是一种不会有针对性地破坏文件的方式。这意味着更改仍应允许文件正常运行,或者我应该能够在任何时间点撤消更改。

是否有人知道我可以用来执行此操作的脚本或许多可自动执行此操作的程序?

干杯

更新

这是我试图处理的边缘案例。我有一个系统只允许我存储一个给定哈希值的文件。因此,我想要更改文件的内容哈希以允许存储文件。请注意,有问题的系统不是我控制或可以更改的系统。

我不能只是在文件的末尾添加一个随机1,然后在不破坏任何内容的情况下将其删除吗?我只是不确定如何编写脚本 - 就像如何以这种方式修改二进制数据一样。注意我在Windows环境中。

2 个答案:

答案 0 :(得分:3)

在不知道文件格式的情况下,我们无法分辨。事实上它可能是不可能的 - 例如,如果这些二进制文件是使用某些私钥进行自签名的话。更改文件中的任何单个位可能会使其无效。

您的哈希值是纯粹根据内容计算的,而不是您可以更改的任何其他元数据(例如文件名或修改日期)?如果是这样,你可能运气不好。如果哈希是为了检测内容何时发生变化,但是你试图更改哈希而不实际更改内容,那么你显然遇到了问题......

用于什么哈希?你为什么要改变它?如果您可以向我们提供有关更大图片的更多信息,可能会有另一种解决方案。

编辑:一种方法是有效地创建自己的容器格式 - 因此,当文件以容器格式存储时,它不能以原始形式使用,但可以轻松提取。您的容器可以像“在末尾添加四个字节作为种子来干扰哈希”一样简单 - “提取”文件只涉及复制它并删除最后四个字节。但重要的一点是,你最终使用并不是 MP3文件或任何你开始使用的东西 - 这是你的自定义格式,虽然简单。您需要在与商店交互时随时打包/提取文件。

答案 1 :(得分:0)

我真的好奇你为什么要解决存储系统的dedeplication部分。出于某种原因,一些工程师陷入了将其构建到系统中的麻烦。