有没有人有任何关于更改文件哈希值的信息而不会破坏它?
我读到了在文件末尾添加空字节,从而更改MD5而不会破坏它。有人有任何信息吗?
我希望这样做的语言是PHP。
感谢。
答案 0 :(得分:6)
这取决于应用程序在读取此文件时的期望。例如,如果它是一个文本文件,您只需在其中一个段落后插入一个空格即可。这不会改变人类对文件的可读性,但会改变MD5。
同样对于基本HTML文件或源文件(如C或PHP),其间距无关紧要(只要在句法上无关紧要的区域插入空格,例如不在字符串常量内)。添加一些额外的空格或在最后添加换行符,您会发现网页的行为不会改变。
然而,这不太可能适用于可执行文件,因为它在运行时可能会崩溃并烧毁(如果它甚至加载 - 某些加载器可能会使用校验和来加载部分)。
您需要准确说明在您谈论的情况下腐败的含义。
更新
例如,在JPEG文件中,可能只需要在最后用唯一的COM部分替换EOI标记,然后使用EOI标记即可。 EOI标记是图像的结尾,您应该能够在它之前插入注释部分(带有唯一注释)。这将使每个JPEG具有不同的MD5,而stil呈现相同的图像。请参阅here。
使用ZIP文件,您实际上可以在每个文件之间插入任意数据,因为最后的目录列出了具有偏移量的文件。有关详细信息,请参阅here。不幸的是,我不熟悉RAR文件的内部。
答案 1 :(得分:3)
听起来您可能最好将这些重复文件更改为符号链接ln -s otherfolder/file file
(假设服务器位于* nix平台上)。
答案 2 :(得分:1)
如果您主要处理.ZIP和.RAR文件,请找到PHP的ZIP / RAR库,只需在每个zip / rar中添加一个小的随机文件。
对于JPEG,请按paxdiablo的回答。