Как реализовать алгоритм Дамма для контрольных сумм и избыточности
Кто-нибудь здесь знает какие-либо учебники или отраслевые руководства, которые предоставляют практическое руководство для обычного инженера (не доктора математики) по реализации алгоритма Дамма?
В частности, я хотел бы знать, как генерируются латинские квадраты, а не просто слепо копировать base-10, предоставленный в Википедии, или вырезать и вставлять чей-то непроверенный код.
Я ищу вариант иметь гибкую базовую систему, включая (но не ограничиваясь этим) базовые 10, 16, 32 или 36 (10 цифр плюс 26 английских букв). Я считаю, что вышеупомянутая схема поддерживает это (все базы, кроме 2 и 6), кто-нибудь знает, если это правильно?
Доступна ли кандидатская диссертация Х. Майкла Дамма на английском языке?
Существует ли способ, с помощью которого можно добавить дополнительные контрольные цифры, чтобы включить избыточность в схему нумерации, то есть расширить полезную нагрузку из четырех цифр данных, чтобы сказать семь цифр, где только четыре из семи должны быть правильными и при этом обеспечивать полное восстановление исходных данных?
т. е. если бы у 1234 было три избыточных цифры, скажем, 789, то 1234789 можно было бы передать как 1X3XX89, где X - нечитаемая цифра, но все же полностью восстановимая.
Это представляется возможным при использовании схемы mod-97, используемой в международных банковских номерах, но она, по-видимому, не обладает гибкостью для схемы Дамма, не являющейся базовым-10, или для некоторых из лучших методов обнаружения фонетических ошибок.
Я даже не знаю, с чего начать.
1 ответ
Я ищу вариант иметь гибкую базовую систему, включая (но не ограничиваясь этим) базовые 10, 16, 32 или 36 (10 цифр плюс 26 английских букв). Я считаю, что вышеупомянутая схема поддерживает это (все базы, кроме 2 и 6), кто-нибудь знает, если это правильно?
Да. См. http://www.md-software.de/math/DAMM_Quasigruppen.txt содержащий квазигруппы для алгоритма Дамма, вплоть до порядка 64, n ≠ 2,6
Доступна ли кандидатская диссертация Х. Майкла Дамма на английском языке?
Не то чтобы я видел. Вы можете попробовать перевести его, используя коммерческий инструмент. Тем не менее, вы можете проверить http://www.sciencedirect.com/science/article/pii/S0012365X06004225
Вы можете преобразовать из базы n в базу 10 и вычислить контрольную цифру.
Я даже не знаю, с чего начать.
См. Системы проверки цифр в коде Google с источником на Java и JavaScript и Обнаружение ошибок на основе схем проверки цифр