有没有人有更改文件的散列而不会破坏它的任何信息?以编程方式更改文件的散列而不损坏文件
我读了关于在文件末尾附加一个空字节,从而改变MD5而不会破坏它。任何人有任何信息?
我希望这样做的语言是PHP。
谢谢。
有没有人有更改文件的散列而不会破坏它的任何信息?以编程方式更改文件的散列而不损坏文件
我读了关于在文件末尾附加一个空字节,从而改变MD5而不会破坏它。任何人有任何信息?
我希望这样做的语言是PHP。
谢谢。
这取决于应用程序在读取此文件时的期望值。例如,如果它是一个文本文件,您可以简单地在其中一个段落之后插入一个空格。这不会改变人类对文件的可读性,但它会改变MD5。
对于基本的HTML文件或源文件(例如C或PHP),间距无关紧要(只要将空格插入语法无关紧要的区域,例如不在字符串常量内)。在最后加入一些额外的空格或添加换行符,您会发现网页的行为不会改变。
但是,这对于可执行文件来说不太可能工作,因为它在运行时可能会崩溃并烧毁(如果确实它加载 - 某些加载器可能会对加载部分使用校验和)。
您需要明确指出在您谈论的情况下,腐败意味着什么。
更新:
例如,在JPEG文件,它可能是在一个独特的COM节,后面的EOI标识结束更换EOI标记的一个简单的事情。 EOI标记是图像的结尾,您应该能够在它之前插入注释部分(带有独特的注释)。这将使每个JPEG具有不同的MD5,而stil呈现相同的图像。见here。
使用ZIP文件时,实际上可以在每个文件之间插入任意数据,因为最后的目录会用偏移量列出文件。详情请参阅here。不幸的是,我不熟悉RAR文件的内部。
对不起,大部分文件都是.ZIP和.RAR,并带有一些.jpegs文件。 – Joseph 2009-12-13 01:12:44
听起来像你可能会更好,只是将这些重复的文件更改为符号链接ln -s otherfolder/file file
(假设服务器是在* nix平台上)。
现在这是一个很好的答案! – 2009-12-13 06:57:19
如果您主要处理.ZIP和.RAR文件,请为PHP找到一个ZIP/RAR库,并且只需在每个zip/rar中添加一个小型随机文件即可。
对于JPEG,请按照paxdiablo的答案。
接受一些答案 – 2009-12-13 01:07:17
你在说什么哈希(MD5?)?你为什么需要这个? – ChristopheD 2009-12-13 01:08:35
是的,MD5。我需要它,因为托管我的网络服务器的人想要删除重复文件,这就是他如何检查它们。我只是想采取反对行动。 :) – Joseph 2009-12-13 01:09:49