Сохранить MD5 хеш текстового файла в тот же текстовый файл? - PullRequest
5 голосов
/ 27 мая 2010

Сегодня я прочитал о хеше MD5 и задавался вопросом, возможно ли это. похоже на рекурсивную проблему ... или есть решение?

Ответы [ 7 ]

4 голосов
/ 27 мая 2010

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

Возможно, вы сможете попробовать, есть ли какие-нибудь хеш-значения MD5, которые при хешировании дают себя в результате (спасибо Франческо за эту ссылку!):
Для всех возможных перестановок хеша MD5 создайте хеш и сравните результат с оригиналом.

4 голосов
/ 27 мая 2010

Это невозможно.

Но вы можете переименовать файл в соответствии с хешем его содержимого, который прикрепляет информацию без изменения хеша.

3 голосов
/ 27 мая 2010

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

Но возможно заполнить 128 бит нулями (например) во время вычисления. Это место будет содержать сумму MD5 и снова должно быть равно нулю, чтобы проверить хеш позже.

2 голосов
/ 27 мая 2010

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

2 голосов
/ 27 мая 2010

Вы должны исключить хеш-сумму из расчета. Затем вы используете его, но вы не можете добавить хэш-ром до конца файла, ожидая, что он будет правильным, или если вы вычислите пробег по новой, yu всегда будет заканчиваться ut новым хешем MD5. Завершить бесконечный рассказ :) 1001 *

1 голос
/ 27 мая 2010

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

0 голосов
/ 15 июня 2016

Вот еще один трюк ...

Сохраните хэш в начале файла и вычислите MD5, исключая этот регион и только важные данные.

"HashMD5 = Md5.ComputeHash(bytes, 382, bytes.Length - 382)"

Таким образом, он учитывает хэш только для области данных (пользовательская структура данных начинается после смещения 382 в файловом буфере)

----------------------- пример структуры данных -----------

<StructLayout(LayoutKind.Sequential, Pack:=1, CharSet:=CharSet.Ansi)>
<Serializable()> Structure MyData
    Dim FileCheckSum() As Byte  '16 bytes HASh for file 'Config.bin'
    Dim Padding() As Byte        ' 0xFF x 20 bytes
    Dim RemoteDevice As RmtDevice

End Structure

Вначале запишите эту строку в файл config.bin, используя «xxxx.FileSystem.WriteAllBytes ()»

Затем откройте файл конфигурации с помощью шестнадцатеричного редактора и найдите позицию начала элемента заполнения (в моем случае это было 382)

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

Примечание !! - Пока ни один из элементов структуры / порядка / номеров элементов не останется прежним, начальная позиция заполнения останется прежней.

Работая на меня ..

Проверено в .net

...