Scripting 更改文件的哈希

Scripting 更改文件的哈希,scripting,hash,binaryfiles,Scripting,Hash,Binaryfiles,我有一个满是二进制文件的文件夹,我想对这些文件进行更改,这样这些文件的哈希值就会更改。我想这样做是一种不会有针对性地损坏文件的方式。这意味着更改应该仍然允许文件正常运行,或者我应该能够在任何时间点撤消更改 有没有人知道我可以用一个脚本来做这件事,或者有很多程序可以自动完成这件事 干杯 更新 这是我正在努力处理的一个边缘案件。我有一个系统,只允许我用给定的哈希值存储一次文件。因此,我想更改文件的内容哈希,以允许存储该文件。请注意,所讨论的系统不是我可以控制或更改的系统 难道我不能在文件末尾添加一个

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

有没有人知道我可以用一个脚本来做这件事,或者有很多程序可以自动完成这件事

干杯

更新

这是我正在努力处理的一个边缘案件。我有一个系统,只允许我用给定的哈希值存储一次文件。因此,我想更改文件的内容哈希,以允许存储该文件。请注意,所讨论的系统不是我可以控制或更改的系统


难道我不能在文件末尾添加一个随机的1,然后在不破坏任何东西的情况下删除它吗?我只是不知道如何编写这个脚本——比如如何以这种方式修改二进制数据。请注意,我在windows环境中。

如果不知道文件的格式,我们无法确定。事实上,这可能是不可能的——例如,如果这些二进制文件是用一些私钥自签名的。更改文件中的任何单个位都可能使其无效

您的散列是否纯粹是根据内容计算的,而不是您可以更改的任何其他元数据(如文件名或修改日期)?如果是这样的话,你可能就不走运了。如果散列用于检测内容何时更改,但您试图更改散列而没有实际更改内容,那么您显然遇到了问题

散列是用来做什么的?你为什么要改变它?如果你能给我们提供更多关于全局的信息,可能会有另一种解决方案


编辑:另一种方法是有效地创建您自己的容器格式-因此,当文件以您的容器格式存储时,其原始形式不可用,但可以轻松提取。您的容器可以简单到“在末尾添加四个字节作为种子以干扰散列”-“提取”文件只需要复制它并删除最后四个字节。但重要的一点是,你最终得到的不是MP3文件或任何你开始使用的文件,而是你的自定义格式,尽管它很简单。您需要在与存储交互时打包/提取文件。

这些文件是什么类型的?如果系统中已经存在该文件,您为什么要再次存储它?你能链接到现有文件吗?如果它们不是自签名的。。。比如说像大多数媒体文件一样,像mp3或avi文件?如果是未签名的DLL或word文档,这会有很大的变化吗?@webwalkerant:您需要大量关于您需要支持的每种二进制文件格式的信息-基本上,您需要找到一些文件,可以在不显著更改内容的情况下对其进行修改。有些容易,有些难,有些不可能。我个人会寻找一种替代方法,而不是走这条路。如果它们是MP3文件,那么只需更改ID3即可。@jon我不能在文件末尾添加一个随机的1,然后在不破坏任何内容的情况下删除它吗?@权宜之计是因为ID3标记是文件内容的一部分吗?