Damm 算法的替代基 table

Alternative base table for Damm algorithm

Damm 算法非常适合处理校验位: https://en.wikipedia.org/wiki/Damm_algorithm

我想将它用于一个应用程序的两个不同实体。但是,对于相同的号码,它们不应具有相同的校验位。

所以我必须为每个实体使用不同的基础table。基 table 是一个 n=10.

的完全反对称拟群

来自 Wikipedia 的示例:

 |0 1 2 3 4 5 6 7 8 9
-+-------------------
0|0 3 1 7 5 9 8 6 4 2
1|7 0 9 2 1 5 4 8 6 3
2|4 2 0 6 8 7 1 3 5 9
3|1 7 5 0 9 8 3 4 2 6
4|6 1 2 3 0 4 5 9 7 8
5|3 6 7 4 2 0 9 5 8 1
6|5 8 6 9 7 2 0 1 3 4
7|8 9 4 5 3 6 2 0 1 7
8|9 4 3 8 6 1 7 2 0 5
9|2 5 8 1 4 3 6 7 9 0

如何生成第二个不同的但也是 n=10 的?

这里列出了 n=10 的第二个 table:

http://www.md-software.de/math/DAMM_Quasigruppen.txt

另一种方法是使用相同的 table 但从临时数字的另一个初始值开始,例如1而不是0。然后校验位总是不同的,但缺点是前导1不会改变校验位,因此对于固定长度的数字可能只是suitable。

这是 n=10 的另一个 table,来源未知。 据说anti-symmetric。 YMMV

0 9 8 7 6 5 4 3 2 1
1 0 5 8 7 6 9 4 3 2
2 1 0 9 8 7 6 5 4 3 
3 2 1 0 5 8 7 6 9 4 
4 3 2 1 0 9 8 7 6 5 
9 4 3 2 1 0 5 8 7 6 
6 5 4 3 2 1 0 9 8 7
7 6 9 4 3 2 1 0 5 8
8 7 6 5 4 3 2 1 0 9
5 8 7 6 9 4 3 2 1 0