Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2008.07.20;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.041 c
2-1213756132
Beluy
2008-06-18 06:28
2008.07.20
Memo в Quick Report


15-1212482905
Перезагрузка
2008-06-03 12:48
2008.07.20
Перезагрузка компьютера


4-1193078322
Wiedzmin
2007-10-22 22:38
2008.07.20
Нажатие кнопки мыши


2-1213613675
EgorovAlex
2008-06-16 14:54
2008.07.20
Запись в файл и чтение из файла записи: есть запись:


2-1213731802
batya-x
2008-06-17 23:43
2008.07.20
установка компанента в delhi 2005





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский