Контрольная сумма SYSV
Алгоритм контрольной суммы SYSV был широко используемым устаревшим алгоритмом контрольной суммы . Он был реализован в UNIX System V , а также доступен через утилиту командной строки sum .
Этот алгоритм бесполезен с точки зрения безопасности и слабее, чем CRC-32, для обнаружения ошибок. [1] [2]
Описание алгоритма
[ редактировать ]Основная часть этого алгоритма — простое сложение всех байтов в 32-битную сумму. В результате этот алгоритм имеет характеристики простой суммы: [2]
- перестановка тех же байтов в другом порядке (например, перемещение текста из одного места в другое) не меняет контрольную сумму.
- увеличение одного байта и уменьшение другого байта на ту же величину не меняет контрольную сумму.
- добавление или удаление нулевых байтов не меняет контрольную сумму.
В результате многие распространенные изменения текстовых данных этим методом не обнаруживаются.
Псевдокод FreeBSD для этого алгоритма:
s = sum of all bytes;
r = s % 2^16 + (s % 2^32) / 2^16;
cksum = (r % 2^16) + r / 2^16;
Последняя часть складывает значение в 16 бит.
Ссылки
[ редактировать ]- ^ GNU coreutils — страницы руководства из
- ^ Jump up to: Перейти обратно: а б FreeBSD по основным командам Руководство –