Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Алгоритм SYSV контрольная сумма была широко используется, наследие контрольной суммы алгоритма. Он реализован в UNIX System V, а также доступен через служебную программу командной строки sum .

Этот алгоритм бесполезен с точки зрения безопасности и слабее CRC-32 cksum для обнаружения ошибок. [1] [2]

Описание алгоритма [ править ]

Основная часть этого алгоритма - это просто сложение всех байтов в 32-битную сумму. В результате этот алгоритм имеет характеристики простой суммы: [2]

  • переупорядочивание тех же байтов в другом порядке (например, перемещение текста из одного места в другое) не изменяет контрольную сумму.
  • увеличение одного байта и уменьшение другого байта на ту же величину не изменяет контрольную сумму.
  • добавление или удаление нулевых байтов не меняет контрольную сумму.

В результате многие общие изменения текстовых данных не обнаруживаются этим методом.

Псевдокод FreeBSD для этого алгоритма:

S  =  сумма  из  всех  байтов ; г  =  s  %  2 ^ 16  +  ( s  %  2 ^ 32 )  /  2 ^ 16 ; cksum  =  ( г  %  2 ^ 16 )  +  г  /  2 ^ 16 ;

Последняя часть складывает значение в 16 бит.

Ссылки [ править ]

  1. ^ sum(1) - страницы руководства от GNU coreutils
  2. ^ a b sum(1)  -  Руководство по основным командам FreeBSD

Источники [ править ]