Вычислить контрольную сумму MD5 для файла во время записи файла в C - PullRequest
4 голосов
/ 16 марта 2012

У меня есть приложение C, которое генерирует очень большие двоичные файлы, каждый около 30 ГБ. После записи каждого файла вычисление контрольной суммы MD5 занимает некоторое время, (примерно пару минут на файл.)

Как бы я мог вычислить контрольную сумму MD5 файла, когда он записывается на диск? Я полагаю, что, сделав это, я, по крайней мере, сэкономил бы дополнительные затраты на повторное чтение файла для последующего вычисления контрольной суммы.

Я использую стандартную библиотеку C для всех операций ввода-вывода файлов, а ОС - Linux.

Можно ли это сделать? Спасибо!

1 Ответ

5 голосов
/ 16 марта 2012

Это, безусловно, возможно сделать. По сути, вы инициализируете вычисление MD5 перед тем, как начать писать. Затем всякий раз, когда вы записываете некоторые данные на диск, также передаете их в функцию обновления MD5. После записи всех данных вы вызываете последнюю функцию MD5 для вычисления окончательного дайджеста.

Если у вас нет удобного кода MD5, RFC 1321 включает в себя эталонную реализацию MD5, которая обеспечивает вышеуказанные операции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...