LINUX.ORG.RU

QFile/QDataStream и проверка целостности


0

1

Доделал (при помощи QDataStream) сохранение/загрузку для своей сафтины, даже вроде бы удалось запилить нормальную проверку на возможность считывания данных (если файл совсем битый или его формат не подходит, то оно не падает, а ругается).

Но вот какая проблема: если файл был на флешке и повредился незначительно (скажем, 1 бит изменился на другой), то оно всё равно его загружает. Или вот пример: открываю шестнадцатиричным редактором мой файл, меняю, скажем, одну буковку на другую. После чего файл грузится нормально, а соответствующая строка получается с изменённой буквой.

Как такого избежать? Дописывать в конец чексумму? Или результирующий файл сжимать каким-нибудь архиватором с проверкой целостности (а есть такие?)?

★★★★★

>Дописывать в конец чексумму?

Почемы бы и нет. Можно даже круче сделать — использовать цифровую подпись.

elverion
()
Ответ на: комментарий от alikhantara

А как лучше сделать чексумму файла, в который будет дописана эта чексумма?

И, может, насчёт архиватора посоветуете? Какие-нибудь целостность при распаковке проверяют? А то я посмотрел, у меня файлы получаются по 300 КиБ в среднем, а после lzma — в 10 раз меньше. В том же самом lzma чексумма хранится?

Obey-Kun ★★★★★
() автор топика
Ответ на: комментарий от Obey-Kun

А как лучше сделать чексумму файла, в который будет дописана эта чексумма?

не надо так делать.вычисляешь чексумму файла и добавляешь её в конец файла. при чтении из потока без последних 32 байтов вычисляешь чексумму и сравниваешь с последними 32-мя байтами

во всех архиваторах итак есть чексумма(CRC),и при паспаковке архиватор сам проверит целостность.
Чем самому разрабатывать архиватор,воспользуйся параметрами(опциями) архиватора.

alikhantara
()
Ответ на: комментарий от alikhantara

> Чем самому разрабатывать архиватор,воспользуйся параметрами(опциями) архиватора.

Да я каг бэ и не собирался разрабатывать :). Заюзаю zlib.

Obey-Kun ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.