2

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

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

所以我必须为每个实体使用不同的基表。基表是一个完全反对称的拟群,n=10 来自维基百科的例子:
-- 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 ?

4

2 回答 2

0

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

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

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

于 2016-04-22T16:56:31.277 回答
0

这是另一个 n=10 的表,来源未知。据说反对称。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
于 2022-02-05T02:06:34.523 回答