Завершено
4
16.05.2022, 05:21
19.09.2022, 04:28
Требуется написать программу для генерации и проверки контрольных сумм у файлов.
Файл-манифест – текстовый файл, в котором содержится информация о контрольных суммах для некоторого набора файлов. Структура:
<имя_файла_1>:<контрольная_сумма_для_файла_1>
<имя_файла_2>:<контрольная_сумма_для_файла_2>
<имя_файла_3>:<контрольная_сумма_для_файла_3>
Реализовать модуль для подсчёта и проверки контрольной суммы одного файла и использовать его в программе. Сама программа должна иметь возможность работы в двух режимах:
Режим 1. Подсчет контрольной суммы для заданного набора файлов и генерация файла-манифеста.
На вход программы в качестве аргументов командной строки подается набор имён файлов. Для каждого из этих файлов программа должна осуществить подсчёт контрольной суммы и занести информацию об имени файла и соответствующей ему контрольной сумме в файл-манифест.
Режим 2. Проверка целостности файлов.
На вход программы в качестве аргумента командной строки подаётся файл-манифест. Для каждого из файлов, указанных в файле-манифесте, необходимо осуществить подсчёт контрольной суммы, сравнить с той, которая указана в манифесте, и выдать в консоль результат о совпадении (ОК) или несовпадении (FAILED) значений.
Режим работы программы задается ключом, переданным как аргумент командной строки. Для первого режима можно использовать ключ --calc
, для второго — --check
.
О понятии контрольной суммы и различных видах её подсчёта можно почитать в википедии. Можно использовать алгоритм CRC16 или любой другой на усмотрение студента.
<название_бинарника> --calc <имя_файла_1> ... <имя_файла_N>
Вывод:
checksum for <имя_файла_1> calculated
...
checksum for <имя_файла_N> calculated
<название_бинарника> --check <имя_файла_манифеста>
Вывод:
<имя_файла_1> : <OK/FAILED>
...
<имя_файла_N> : <OK/FAILED>