Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подскажите алгоритм вычисления контрольной суммы [D6, Win2k]


Sour Smile ©   (2007-11-20 12:25:00) 

Есть огромный файл, который разбит (логически) на несколько кусков. Контрольная сумма (сейчас я использую MD5) всего файла и каждого куска хранится в базе. Время от времени содержимое кусков меняется и приходится пересчитывать контрольную сумму не только изменённого куска, но и всего файла.
Подскажите, может есть алгоритм вычисления такой хитрой контрольной суммы, в которой для вычисления всего файла достаточно знать всего лишь контрольные суммы всех кусков?

Желательно, при этом, что бы алгоритм обладал особенностью (как она правильно называется?), когда с максимальной вероятностью гарантируется, что любые изменения в вычисляемом блоке, приводили к изменению значения самой суммы (такой особенность обладает MD5, SHA1 и другие). Без этого условия, конечно легко придумать простой алгоритм, например простое сложение всех байт :)


Jeer   (2007-11-21 13:02:00) [1]


> Или как XOR, чтобы длина была такая же.


Я, вообще-то, имел в виду КС файла = КС(Б1+Б2+Б3+..)
Неточно выразился. А метод расчета - на усмотрение автора с учетом требуемых надежности, быстродействия и защищенности.


palva   (2007-11-21 11:14:00) [2]

> 2. Считать контрольную сумму файла как конкатенацию контрольных сумм блоков

Или как XOR, чтобы длина была такая же.

MD5 - довольно медленный алгоритм. Можно использовать другой, например Sapphire II. Если контрольную сумму не нужно защищать от злоумышленников, то можно использовать очень простой алгоритм.


Jeer   (2007-11-20 17:16:00) [3]

P.S.
Общее время резко уменьшится.


Jeer   (2007-11-20 17:15:00) [4]

1. Считать и запоминать контрольные суммы блоков
2. Считать контрольную сумму файла как конкатенацию контрольных сумм блоков

"Дешево и сердито"


Наверх

Титульная страница Поиск, карта сайта Написать письмо