2012-01-17 5 views
1

Мне нужно дублировать различные типы файлов, немного измените их так, чтобы хэш-код оригинала md5 не соответствовал модифицированному, но сохранил его читабельность и не исказился.Как редактировать файлы для изменения хеша md5 без развращения?

TXT-файлы - это очевидно. Я просто добавляю случайную строку в конец файла.

PDF-файл - ну, я начал искать библиотеку java для редактирования pdf-файлов, но затем я случайно попытался открыть файл pdf в блокноте ++, и подумал: почему бы мне не попробовать добавить случайную строку в конец из нечитаемого содержания, которое я вижу там. Ну, к моему удивлению, это сработало, и файл не был поврежден.

ZIP-файл - я пробовал то же, что и с pdf, и он также работал.

DOCX- тот же метод здесь не работает. Добавление всего пространства ("") в конец двоичного содержимого файла docx, которое я открываю в текстовом редакторе, искажает файл.

Так что мне нужно:

  1. Java библиотеки для изменения офисных документов: DOC, DOCX, XLS, XLSX, PPT, PPTX.

  2. Есть еще типы файлов, которые мне нужно изменить там mh5-хэш-вывод, но я не думаю, что они могут быть модифицируемы в java-медиафайлах, например, исполняемых файлах и т. Д. Итак, тем не менее, как я могу выполнять то, что я хочу в этих файлах? Есть ли способ просто «прикоснуться» к файлу, изменить заголовок или что-то еще и сделать его неидентичным для нетронутого?

редактировать: Хорошо, вот мотивация - я хочу, чтобы генерировать огромное количество данных, как я просил здесь: How to produce massive amount of data?

Во время этого вопроса, ответы на которые я получил там было достаточно, но не они этого не делают.

  1. Мне нужны данные, чтобы они были неидентичными. Пары файлов должны сбой md5-хэш-теста.

  2. Я не могу просто генерировать случайные строки, потому что мне нужно имитировать реальные файлы и documnets.

  3. Я не могу использовать существующие дампы данных, потому что мне нужны различные размеры этих наборов данных, которые включают в себя различные типы файлов. Мне нужно что-то, что я дам в качестве размера ввода, и он будет генерировать данные для меня.

Поэтому я решил, что должен использовать начальный набор данных всех типов файлов, которые мне в конечном итоге нужны, и просто дублировать этот набор данных.

+0

1.) java-библиотеки для изменения офисных документов: doc, docx, xls, xlsx, ppt, pptx. Здесь вы идете http://poi.apache.org/ – bpgergo

+0

Из любопытства, зачем вы это делаете? Вы не добавляете или не изменяете _content_ этих файлов, просто изменяя хэш-файл md5, тем самым побеждая использование хеша использования md5, обнаруживают вероятные дубликаты файлов. Вы уверены, что нет другого способа сделать то, что вы хотите? – CPerkins

+0

Я отредактировал вопрос с мотивацией – AAaa

ответ

2
  1. Java библиотеки для изменения офисных документов: DOC, DOCX, XLS, XLSX, PPT, PPTX.

Apache POI используется для изменения файлов MS Office. Обратите внимание, что более новые форматы (xlsx, docx и т. Д.) - это просто ZIP-файлы, содержащие XML.Распаковка их и изменение обычного текста XML возможно работа также.

Те же советы обращаются к файлам ZIP: попробуйте разархивировать и модифицировать самый простой файл.

Но чего вы на самом деле пытаетесь достичь? Обратите внимание, что случайное прикрепление некоторой строки в конце файла работает только случайно. На другом компьютере или другой версии программного обеспечения файл может считаться поврежденным ...

Я бы посоветовал вам либо хранить некоторые метаданные, внешние по отношению к файлу, а не сравнивать MD5 или смотреть глубже в форматы файлов. Есть почти всегда заголовки и различные фрагменты метаданных, скрытые в файле (теги ID3 в MP3, EXIF ​​в изображениях и т. Д.). Это гораздо безопаснее изменить.

Также ищите зарезервированные/неиспользованные байты - это довольно часто. Но опять же - почему? Вы делаете это на первом месте?

+0

Я редактировал вопрос с мотивацией. Я не тот, кто использовал MD5 для сравнения файлов. У меня есть приложение, которое получает файлы как входные данные и выводит результат. он использовал MD5 для удаления дубликатов файлов. – AAaa

Смежные вопросы