Обратное проектирование алгоритма контрольной цифры

Я пытаюсь перепроектировать алгоритм, используемый для создания контрольной цифры.

Числа составляют 8 цифр, а последняя цифра - контрольная цифра. У меня есть тысячи действительных номеров для проверки.

Я пробовал стандартные алгоритмы Luhn, Verhoeff и modulo-10 (проверка грубой силы всех возможных весов), но не смог найти ответ!

Можно ли это вычислить? Любые идеи?

Вот несколько примеров допустимых чисел:

1002784-5
1000514-7
1001602-8
1001255-2
1001707-1
1003355-5
1005579-1
1004535-0
1004273-1
1001695-9
1004565-9
1000541-9
1001291-1
1005866-1
1004352-7

EDIT: Спасибо, ребята, к сожалению, у меня нет доступа к коду. Номер является номером налога, мне нужно убедиться, что номер был введен правильно. По моим исследованиям, похоже, что в большинстве стран используется довольно стандартная система типа "по модулю 10". У меня есть доступ к 60 000 номеров.

Я понимаю, что проблему можно было бы решить невозможно, это было скорее академической проблемой.

Ответы

Ответ 1

Сначала проверьте свой контекст:

Если контекст - это кредитные карты, лицензии на водительские права, номера государственных лицензий (а не SSN), думают, что Лунь или Мод 10. Если какая-либо другая отрасль, имеет ли эта отрасль стандарт дефакто? Если нет, то разработчик системы использует цифры также игрока в отрасли, имеющей фактический стандарт?

Никто не любит изобретать велосипед, если им это не нужно.

Если это не поможет:

Не предполагайте, что все цифры в проверенных вами ключах используются для получения контрольной цифры. Для расчета контрольной цифры (или любой другой комбинации) используются только 4 или 8 цифр. Также возможно наличие некоторого внешнего номера PREFIX, который используется с другими цифрами для получения контрольной цифры. Итак... выровняйте все свои номера с одинаковой контрольной цифрой и посмотрите, что такое сходство. Можете ли вы добавить к ним номер, а затем всегда достигать контрольной цифры? Можете ли вы проверить только первые несколько цифр? Последние несколько цифр? каждая другая цифра?

Удачи.