Какой алгоритм использовать для вычисления контрольной цифры? - PullRequest
8 голосов
/ 09 июля 2009

Какой алгоритм использовать для вычисления контрольной цифры для списка цифр?
Длина списка составляет от 8 до 12 цифр.

см. Также:
Как сгенерировать проверочный код / ​​номер?

Ответы [ 5 ]

7 голосов
/ 09 июля 2009

Алгоритм Луна достаточно хорош для индустрии кредитных карт ...

5 голосов
/ 09 июля 2009

Как указывает RichieHindle, алгоритм Луна довольно хорош. Он обнаружит (но не исправит) любую ошибку или транспонирование (кроме транспонирования 0 и 9).

Можно также рассмотреть алгоритм для контрольных цифр ISBN , хотя для ISBN старого стиля контрольная цифра иногда равна "X", что может быть проблемой для вас, если вы используете целочисленные поля , Новый стиль ISBN, похоже, не имеет этой проблемы. Википедия не затрагивает теоретические свойства системы, но я помню, как давно изучал номера ISBN в моем курсе теории кодирования, поэтому я думаю, что они довольно хороши: -)

2 голосов
/ 17 февраля 2015

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

Итак, я проверил больше алгоритмов, и ИМХО, лучшее решение (только для цифр), кажется, алгоритм Дамма . Он прост в реализации и обнаруживает большинство проверенных ошибок (все ошибки с одной цифрой и все ошибки транспонирования, почти все ошибки транспонирования скачка) .

Для меня была только одна проблема, поскольку мне нужно вычислять контрольную цифру не только из цифр, но и из символов. Существует множество способов транскрибировать символы в цифры, но обнаружение ошибок всегда будет ниже, чем используются только цифры.

Для этих случаев вы можете использовать спецификацию ISO_6346 .

2 голосов
/ 29 августа 2009

Verhoeff , нет ничего лучше IMO.

...