Russian Qt Forum
Май 04, 2024, 03:16 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Запись и чтение контрольной суммы файла  (Прочитано 5211 раз)
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« : Апрель 21, 2015, 18:12 »

Привет. Есть файл в бинарном формате. Программа умеет определять некоторые повреждения файла при чтении, но для надёжности думаю есть смысл писать контрольную сумму.
С самой контрольной суммой разобрался. Каким образом ее вычислить и куда писать. Например у меня есть заголовок файла (сигнатура, версия, кое какие атрибуты) и собственно данные (точнее различные секции с данными). Правильно ли я понимаю, что есть смысл вычислить контрольную сумму сразу после сигнатуры и записать ее после нее?
Записан
Bepec
Гость
« Ответ #1 : Апрель 21, 2015, 19:15 »

В структуру блока данных записывай Улыбающийся
Заголовок + ( длина блока + КС + данные ) * N
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Апрель 22, 2015, 08:04 »

Правильно ли я понимаю, что есть смысл вычислить контрольную сумму сразу после сигнатуры и записать ее после нее?
Да, контрольная сумма считается по записанному файлу. Что касается ее полезности, то она, на мой взгляд, невелика. Так или иначе надо делать теги, там и контроль сам собой. 
Записан
Fregloin
Супер
******
Offline Offline

Сообщений: 1025


Просмотр профиля
« Ответ #3 : Апрель 22, 2015, 09:07 »

Верес, немного не понял Вас..  Строит глазки КС писать для каждого блока данных?
По поводу избыточнотси - делается для того что бы со стороны никто не мог редактировать бинарные данные. Т.е. КС не правильная, програ не грузит файл и сообщает об этом.
Теги в файле присутсвтуют, по сути это XML только преобразованный в свой формат (с индексацией строковых констант для уменьшения размера файла и скорости обработки).
Наличие тегов и сигнатур проверяется, а вот собственно правка бинарных данных никак не может быть выявлена. Поэтому и хочется писать КС для гарантии, что юзер будет работать
с правильной версией файла, которую мы поставили на объект. Лишить возможности редактирования в HEX редакторе.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Апрель 22, 2015, 09:25 »

Лишить возможности редактирования в HEX редакторе.
Ну если кто-то возымеет желание править Ваш файл - это уже успех  Улыбающийся
Записан
Bepec
Гость
« Ответ #5 : Апрель 22, 2015, 09:42 »

По поводу вопрос - я думал у вас блочная запись. Для каждого блока своя КС.

Сделайте как в хроме - там записывается не CRC чистый, а хеш от CRC. Веселый

PS добавляет массу головной боли "редакторам" Веселый
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #6 : Апрель 22, 2015, 10:12 »

По поводу вопрос - я думал у вас блочная запись. Для каждого блока своя КС.

Сделайте как в хроме - там записывается не CRC чистый, а хеш от CRC. Веселый

PS добавляет массу головной боли "редакторам" Веселый

Напоминает хранение не паролей, а хешей паролей пользователей Улыбающийся Если базу паролей умыкнуть, то получат фигню хеши Улыбающийся
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 23.