Вот еще один трюк ...
Сохраните хэш в начале файла и вычислите 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