Nei*_*eil 15 algorithm reverse-engineering check-digit
我正在尝试对用于生成校验位的算法进行逆向工程.
数字长8位,最后一位是校验位.我有成千上万的有效数字来测试它.
我尝试过标准的Luhn,Verhoeff和modulo-10算法(对所有可能的权重进行强力检查),但找不到答案!
有可能计算出来吗?有任何想法吗?
以下是有效数字的一些示例:
1002784-5
1000514-7
1001602-8
1001255-2
1001707-1
1003355-5
1005579-1
1004535-0
1004273-1
1001695-9
1004565-9
1000541-9
1001291-1
1005866-1
1004352-7
Run Code Online (Sandbox Code Playgroud)
编辑:谢谢你们 - 遗憾的是我没有访问代码.该号码是一个税号,我需要能够验证该号码是否输入正确.从我的研究看起来大多数国家都使用非常标准的模10型系统.我可以访问大约6万个号码.
我知道问题可能无法解决,更多的是学术上的关注.
小智 2
首先检查您的上下文:
如果上下文是信用卡、驾驶执照、政府许可号码(不是 SSN),请考虑 Luhn 或 Mod 10。如果是其他行业,该行业是否有事实上的标准?如果不是,使用这些数字的系统开发者是否也是拥有事实上标准的行业参与者?
如果没有必要,没有人愿意重新发明轮子。
如果这没有帮助记住:
不要假设您正在测试的密钥中的所有数字都用于得出校验位。可能仅使用 4 或 8 位数字来计算校验位(或任何其他组合)。也可能有一些外部前缀号码与其他数字一起使用以得出校验位。所以...将所有数字与相同的校验位对齐,看看有什么相似之处。您可以向它们添加一个数字,然后始终到达校验位吗?您可以只测试前几位数字吗?最后几位数字?每隔一个数字?
祝你好运。