Russian Qt Forum

Программирование => Общий => Тема начата: Павелъ от Апрель 26, 2017, 21:18



Название: Как средствами QT получить контрольную сумму файла/папки/диска?
Отправлено: Павелъ от Апрель 26, 2017, 21:18
Доброго времени суток.

Дана задача написать программу, которая будет возвращать контрольную сумму файла/папки/диска.
Для получения контрольной суммы файла в Qt вроде есть стандартные средства. С этим более-менее понятно.

А как быть с группой файлов, контрольную сумму которой нужно получить?

Прочитал, что можно поместить в компрессор/архив папку, а архив будет хранить контрольную сумму, которую можно из архива получить.

Но как тогда это сделать? Может, в Qt есть какие-нибудь средства, позволяющие получить контрольную сумму из архива?


Название: Re: Как средствами QT получить контрольную сумму файла/папки/диска?
Отправлено: Swa от Апрель 26, 2017, 21:44
Можно получить контрольную сумму файла тк он является непрерывным набором байт, но невозможно получить контрольную сумму директории или диска.
Какую конкретно задачу вы пытаетесь решить?


Название: Re: Как средствами QT получить контрольную сумму файла/папки/диска?
Отправлено: Павелъ от Апрель 26, 2017, 21:51
есть к примеру на cd файлы, мне нужно получить контрольную сумму этого cd или папки, в которой хранятся эти файлы. Чтобы убедиться, что никто не изменил или не удалил файл.

Как вариант, можно сделать архив с файлами и получить его контрольную сумму?

Тогда, какие есть средства в Qt для работы с архивами?


Название: Re: Как средствами QT получить контрольную сумму файла/папки/диска?
Отправлено: Swa от Апрель 26, 2017, 22:04
Попробуйте QCryptographicHash http://doc.qt.io/qt-5/qcryptographichash.html (http://doc.qt.io/qt-5/qcryptographichash.html). Получите список всех файлов в директории, потом от каждого считайте MD5 хеш, затем сложите все хеши в один массив и посчитайте хеш от него. Перебирайте файлы всегда в одинаковом порядке, например по алфавиту.


Название: Re: Как средствами QT получить контрольную сумму файла/папки/диска?
Отправлено: qate от Апрель 27, 2017, 09:04
есть хорошая свободная консольная программа md5sum, которая считает и проверяет суммы файлов и каталогов (для венды тоже есть)
необходимо посчитать суммы, записать в файл, а затем сравнить
все что нужно от qt - вызвать её и выдать результат на экран
не нужно ничего писать самому (отлаживать и ловить баги, и будет медленнее), все уже сделано
также такой вариант будет работать без qt, бывает и так нужно


Название: Re: Как средствами QT получить контрольную сумму файла/папки/диска?
Отправлено: Igors от Апрель 27, 2017, 09:12
А может стоит умерить аппетит и удовлетвориться проверкой длины + даты модификации файла


Название: Re: Как средствами QT получить контрольную сумму файла/папки/диска?
Отправлено: qate от Апрель 27, 2017, 11:31
А может стоит умерить аппетит и удовлетвориться проверкой длины + даты модификации файла

если говорить о CD то проверять md5 это еще и проверять чтение, что актуально при царапинах, например