Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.07.20;
Скачать: CL | DM;

Вниз

Подскажите алгоритм вычисления контрольной суммы   Найти похожие ветки 

 
Sour Smile   (2007-11-20 12:25) [0]

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

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


 
Jeer ©   (2007-11-20 17:15) [1]

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

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


 
Jeer ©   (2007-11-20 17:16) [2]

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


 
palva ©   (2007-11-21 11:14) [3]

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

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

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


 
Jeer ©   (2007-11-21 13:02) [4]


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


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



Страницы: 1 вся ветка

Текущий архив: 2008.07.20;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.02 c
3-1202726641
pavel_guzhanov
2008-02-11 13:44
2008.07.20
Непонятность с null в хранимой процедуре


4-1193206467
Dmitry S
2007-10-24 10:14
2008.07.20
WNetAddConnection2: The network path was not found.


15-1212564530
dmitry_12_08_74
2008-06-04 11:28
2008.07.20
Подскажите, где скачать библиотеку компонентов PNGComponents


2-1213864974
webpauk
2008-06-19 12:42
2008.07.20
Преобразование переменных


3-1202477060
harisma
2008-02-08 16:24
2008.07.20
Количество подключений к базе данных