如何实现Damm算法的校验和和冗余

时间:2015-04-07 05:28:01

标签: algorithm redundancy check-digit

有没有人知道任何教科书或行业指南为普通工程师(不是数学博士)提供实用指南来实施Damm算法?

具体来说,我想知道如何生成拉丁方格,而不是盲目地复制维基百科上提供的基础10,或者剪切并粘贴别人未经检查的代码。

我正在寻找具有灵活基础系统的选项,包括(但不限于)基础10,16,32或36(10个数字加上26个英文字母)。我相信前面提到的方案支持这个(除了2和6之外的所有基础),有谁知道这是否正确?

H. Michael Damm的博士论文是否有英文版本?

是否有一种方法可以添加额外的检查数以包括编号方案中的冗余,即将四个数据的有效负载扩展为七位数,其中七个中只有四个需要正确并且仍然允许完全恢复原始数据?

即。如果1234有三个冗余数字表示789,那么1234789可以作为1X3XX89传输,其中X是一个不可读的数字但仍然可以完全恢复。

这似乎可以用国际银行编号中使用的mod-97方案,但这似乎没有非基础10 Damm方案的灵活性,或者一些更好的语音错误检测。

我甚至不知道从哪里开始寻找。

1 个答案:

答案 0 :(得分:0)

  

我正在寻找具有灵活基础系统的选项,包括(但不限于)基础10,16,32或36(10个数字加上26个英文字母)。我相信前面提到的方案支持这个(除了2和6之外的所有基础),有谁知道这是否正确?

是。请参阅包含Quasigroups的http://www.md-software.de/math/DAMM_Quasigruppen.txt达到64阶的Damm算法,n≠2,6

  

H. Michael Damm的博士论文是否有英文版本?

不是我见过的。您可以尝试使用商业工具进行翻译。但是,您可以查看http://www.sciencedirect.com/science/article/pii/S0012365X06004225

您可以从base n转换为base 10并计算校验位。

  

我甚至不知道从哪里开始寻找。

请参阅Google Code上的Check Digit Systems,其中包含Java和JavaScript源代码以及Error Detection Based on Check Digit Schemes