2017-01-12 10 views
1

Я отчаянно пытаюсь найти алгоритм для создания контрольной суммы, длина которой не более двух символов и может распознавать путаницу символов во входной последовательности. При тестировании различных алгоритмов, таких как Luhn, CRC24 или CRC32, контрольные суммы всегда были длиннее двух символов. Если я уменьшу контрольную сумму до двух или даже одного символа, то уже не будут распознаны все коммутации.Алгоритм для однозначной контрольной суммы

Кто-нибудь из вас знает алгоритм, который отвечает моим потребностям? У меня уже есть имя, с которым я могу продолжить поиск. Я был бы очень благодарен за вашу помощь.

+0

Что именно представляет собой класс ошибок, который вы хотите обнаружить? Только обмен соседними символами? –

+0

Я не указал класс ошибок, но чем больше ошибок может быть обнаружено, тем лучше будет. –

+1

Один из вариантов CRC16? –

ответ

1

Принимая, что ваши данные являются буквенно-цифровыми, вы хотите обнаружить все перестановки (в идеальном случае), и вы можете позволить себе использовать двоичную контрольную сумму (то есть полные 16 бит), я предполагаю, что вам следует, вероятно, пойти с CRC-16 (как уже было предложено @Paul Ханкина в комментариях), так как она больше информации высококалорийных, чтобы проверить-значные алгоритмы по сравнению как Лун или Дамм и более «общий», когда речь идет о возможные типы ошибок.

Может быть что-то вроде CRC-CCITT (CRC-16-CCITT), вы можете дать ему попробовать here, чтобы увидеть, как это работает для вас.

Смежные вопросы