У кого-нибудь есть информация об изменении хэша файла без его развращения?
Я читал о добавлении нулевого байта в конец файла, тем самым изменяя MD5 без его развращения. У кого-нибудь есть информация?
Язык, на котором я хочу сделать это, – это PHP.
Благодарю.
Это зависит от того, чего ожидают приложения при чтении этого файла. Если, например, это текстовый файл, вы можете просто вставить пробел, следующий за одним из абзацев. Это не изменяет читаемость файла людьми, но изменяет MD5.
Аналогично, для основных файлов HTML или исходных файлов, таких как C или PHP, где интервал не имеет значения (пока вы вставляете пространство в синтаксически незначительную область, поэтому не внутри строковых констант, например). Поместите некоторые дополнительные пробелы или добавьте символы новой строки в конце, и вы обнаружите, что поведение ваших веб-страниц не меняется.
Однако это вряд ли будет работать для исполняемого файла, так как он, вероятно, сработает и сгорит при его запуске (даже если он даже загрузится – некоторые загрузчики могут использовать контрольные суммы для разделов загрузки).
Вам нужно точно указать, что означает коррупция в случае, о котором вы говорите.
Обновить:
Например, в файлах JPEG, вероятно, просто вопрос замены маркера EOI в конце с помощью уникальной секции COM, за которой следует маркер EOI. Маркер EOI – это конец изображения, и вы должны быть в состоянии добавить раздел комментария (с уникальным комментарием) перед ним. Это приведет к тому, что каждый JPEG будет иметь другой MD5, пока он будет показывать одно и то же изображение. См. Здесь .
С ZIP-файлами вы можете вставлять произвольные данные между файлами, так как каталог в конце содержит файлы с их смещениями. Подробнее см. Здесь . К сожалению, я не знаком с внутренними файлами RAR.
Похоже, вам может быть лучше просто сменить эти дубликаты файлов на символические ссылки ln -s otherfolder/file file
(при условии, что сервер находится на платформе * nix).
Если вы в основном имеете дело с файлами .ZIP и .RAR, найдите библиотеку ZIP / RAR для PHP и просто добавьте крошечный случайный файл для каждого zip / rar.
Для JPEG-файлов следуйте ответам paxdiablo .