среда, 6 февраля 2013 г.

контрольная сумма fletcher

где D строка байт для которых должна быть вычислена контрольная сумма, а n длина D.

= n×D1 + (n-1)×D2 + (n-2)×D3 + ... + Dn + n (mod 65521)

B = (1 + D1) + (1 + D1 + D2) + ... + (1 + D1 + D2 + ... + Dn) (mod 65521)

Функция может быть выражена как:

Контрольная сумма Adler-32 получается путём вычисления двух 16-битных контрольных сумм A и Б и конкатенации их бит в 32-битное целое. А равняется сумме всех байт в строке плюс один, а Б является суммой всех отдельных значений А на каждом шаге. В начале выполнения функции Adler-32, А инициализируется единицей, а Б нулем. Суммы берутся по модулю 65521 (самое большое простое число меньшее чем 216). Байты записываются в сетевом порядке, Б занимает 2 старших байта.

Так же как и в случае контрольной суммы Fletcher, при разработке суммы Adler стояла задача получения контрольной суммы с эффективностью обнаружения ошибок сравнимой с CRC. Хотя показатели поиска ошибок контрольных сумм Adler и Fletcher практически такие же как и у относительно слабых CRC, они ведут себя гораздо хуже, чем хорошие CRC, в некоторых важных случаях.

Adler-32 хеш-функция, разработанная Марком Адлером. Является модификацией контрольной суммы Fletcher. Вычисляет значение контрольной суммы в соответствии с для массива байт или его фрагмента. Данный алгоритм расчёта контрольной суммы отличается от CRC32 производительностью. Adler-32 используется в библиотеке Zlib. Rolling checksum версия функции используется в утилите rsync.

HashTab 5.1 Самый простой способ проверить подлинность и целостность ваших файлов!

Комментариев нет:

Отправить комментарий