【发布时间】:2017-07-02 00:30:19
【问题描述】:
我找不到用于计算我的银行参考的 2 位校验位的算法。
一些例子
0404 3295 60983
0707 3328 25810
0900 9907 32991
0900 8912 91695
0707 2268 89938
0808 1153 45010
0808 0964 91963
0900 6632 28254
0707 2802 64344
0909 0256 01882
0707 3004 54587
0707 3164 30453
0404 2914 27064
0707 3306 30672
0404 1467 53870
0808 1733 55047
0808 2349 11733
0707 3158 51956
0707 3346 64573
0404 3396 83589
由于用户帐户,我知道最后 2 位是校验位。
for example:
Area: 040
User account: 43266008
Bank reference: 0404 3266 00828
so... 28 <- Check digits.
我尝试了 Mod 97 和 Base 10 (Luhn)
我不知道其他算法,例如: Mod 22,Base 36,算法 45
¿有什么想法吗?
对我的样本进行分组和计数,如果有帮助的话:
CheckDigits SamplesCount
01 2720
02 2698
03 2743
04 2719
05 2820
06 2737
07 2795
08 2737
09 2760
10 2778
11 2787
12 2780
13 2779
14 2658
15 2711
16 2770
17 2718
18 2675
19 2669
20 2675
21 2780
22 2737
23 2721
24 2723
25 2631
26 2694
27 2615
28 2800
29 2903
30 2718
31 2712
32 2733
33 2813
34 2782
35 2820
36 2754
37 2686
38 2755
39 2774
40 2688
41 2738
42 2799
43 2669
44 2774
45 2754
46 2623
47 2684
48 2711
49 2740
50 2735
51 2658
52 2793
53 2752
54 2782
55 2818
56 2718
57 2735
58 2738
59 2755
60 2716
61 2818
62 2738
63 2716
64 2710
65 2607
66 2640
67 2799
68 2763
69 2827
70 2968
71 2734
72 2679
73 2758
74 2730
75 2856
76 2713
77 2768
78 2694
79 2684
80 2693
81 2798
82 2739
83 2809
84 2754
85 2710
86 2833
87 2820
88 2739
89 2733
90 2739
91 2745
92 2805
93 2686
94 2771
95 2758
96 2754
97 2688
Sears 和 Oxxo 的参考有一个校验位,即 Mod10 (Luhn)。
(可以在这个页面计算luhn校验位:https://planetcalc.com/2464/)
Reference: 0900 5719 759
Check digit (Luhn): 3
我如何获得 88?
【问题讨论】:
-
什么是“银行参考”?这些价值观从何而来? (它没有任何文档吗?)
-
银行参考号是公司提供给您的号码,用于在银行付款。在这种情况下,是针对墨西哥的一家手机公司。他们将此号码提供给客户,以便他们在银行或某些商店支付服务费用。
-
此值来自某些客户端。但不管数字是多少。重要的部分是“校验位”……就像信用卡一样……它们最后有一个校验位,所以你在写的时候不会错过任何数字,信用卡使用 Luhn 算法。有的银行用的是Mod 97,都是常用的算法……就是找不到这家公司用的是什么算法。
-
你试过问他们吗?它可能不是标准算法。
-
如果银行支持电子银行,那么您可能会在客户端找到对输入的 javascript 验证(例如,如果他们在将输入发送到客户端之前检查输入是否在客户端有效)进行关键检查的服务器)。
标签: algorithm reference modulus luhn check-digit