Я подумал о реализации простой контрольной цифры с использованием взвешенной суммы цифр по модулю 10. Кроме того, в качестве контрольной цифры я хочу «злоупотребить» контрольной цифрой, чтобы определить, какой из двух пулов (например, номера статей) и номера клиентов) номер принадлежит.
Согласно Википедии рекомендуется использовать 1, 3, 7 и 9 в качестве веса, поэтому, например, я мог выбрать:
Article Numbers: Weights 1, 3, 7, 1, 3, 7, ...
Customer Numbers: Weights 7, 9, 1, 7, 9, 1, ...
Number 1234 as an Article Number (1*1+2*3+3*7+4*1 mod 10 = 2): 12342
Number 1234 as a Customer Number (1*7+2*9+3*1+4*7 mod 10 = 6): 12346
Проблема в том, что иногда это дает одинаковую контрольную цифру для обеих настроек веса:
Number 1098 as an Article Number (1*1+0*3+9*7+8*1 mod 10 = 2): 10982
Number 1098 as a Customer Number (1*7+0*9+9*1+8*7 mod 10 = 2): 10982
Могу ли я выбрать вес пулов номеров таким образом, чтобы для любого данного исходного номера гарантировалось, что контрольная цифра никогда не будет одинаковой для обоих пулов?