Что есть CRC?
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [18.97.9.174] |
|
|
правила раздела Алгоритмы

Что есть CRC?
|
Сообщ.
#1
,
|
|
|
|
Один простой вопрос:
вообщем хочу замутить проверку в своей проге ( CRC ) для антиотладки Как эта контрольная сумма создается? Существуют специальные алгоритмы, или алгоритм по составлению CRC можно придумать самому и все так делают? |
|
Сообщ.
#2
,
|
|
|
|
Суествуют специальные алгоритмы, обеспечивающие в среднем максимальную надежность (т.е., минимальную вероятность необнаружения искажений).
Можно придумать и самому -- просто взять и просуммировать все байты в тексте mod 2^16, получив какое-то число. Его и называть контрольной суммой. |
|
Сообщ.
#3
,
|
|
|
|
|
Сообщ.
#4
,
|
|
|
|
|
Сообщ.
#5
,
|
|||
|
|
Более того, некоторые даже позволяют восстанавливать испорченные данные. Например распространенный CRC32 позволяет восстановить однократную ошибку (искажение). |
|
Сообщ.
#6
,
|
|||
|
|
Можно поподробнее об алгоритме, please. wbr,barrett |
|
Сообщ.
#7
,
|
|
|
|
Ну не совсем так... Даже теоретически невозможно восстановить однократную ошибку в кодовом слове, если мощность множества вариантов етой однократной ошибки больше или равна мощности множества всех возможных значений CRC...
Для блоков меньше чем 2^15 бит с CRC32 можно попробовать найти етот один испорченный бит изменяя его значение и снова рассчитывая CRC32, пока не совпадет. Но, результат не гарантирован -- испорченных битов может быть и больше одного. А еще ошибки любят ходить пакетами -- когда портятся несколько подряд идущих битов... Поетому для таких целЕй используются настоящие корректирующие коды, исправляющие ошибки до T-кратных, в том числе и циклические, как CRC... |
|
Сообщ.
#8
,
|
|||||
|
|
По моей ссылочке, там книга, все подробно расписано. |
|
Сообщ.
#9
,
|
|||
|
|
К сожалению, не слишком силен в математике. Просто когда-то занимался реализациями протокола Z-Modem, использующего CRC32. Так вот, встречал вариант реализации в котором с его помошью восстанавливалась однократная ошибка одного бита в блоке из 1024 байт. Причем не просто методом подбора. |