校验码系统是产生校验码并校验包括校验码在内的字符串的一套规则。它可以防止在抄录和键入字符串时产生的错误。
查错类型
- 单一字符替代错误,如1234被错录为4234
- 单一字符对换错误,如12345被错录为12354或12543
- 位移错误,如_123被错录为123_
- 双替代错误,如1234567被错录为7234587
类型
ISO 2108
ISO 2984
ISO 6166
ISO 7064校验码系统[1]
表示方法 |
适用范围 |
校验码数目及类型
|
ISO 7064 Mod 11-2 |
数字型字符串 |
1位数字或附加符X
|
ISO 7064 Mod 37-2 |
字母数字型字符串 |
1位数字或字母或附加符*
|
ISO 7064 Mod 97-10 |
数字型字符串 |
2位数字
|
ISO 7064 Mod 661-26 |
字母型字符串 |
2位字母
|
ISO 7064 Mod 1271-36 |
字母数字型字符串 |
2位数字或字母
|
表示法 |
应用 |
字符数目及类型
|
ISO 7064 MOD 11,10 |
数字串 |
1位数字
|
ISO 7064 MOD 27,26 |
字母串 |
1位字母
|
ISO 7064 MOD 37,36 |
字母数字串 |
1位数字或字母
|
计算方法
ISO 7064
纯系统
- n:字符串的字符个数(包括校验码)
- i:字符位置序号(由右至左,包括校验码,空格与分隔符不及),即最右边的字符i=1
- ai:字符值(见下表)
- r:底数,几何级数的基数
- M:模数
字符 |
数字字符值 |
字母字符值 |
字母数字字符值 |
备注
|
0 |
0 |
|
0 |
|
1 |
1 |
|
1 |
|
2 |
2 |
|
2 |
|
3 |
3 |
|
3 |
|
4 |
4 |
|
4 |
|
5 |
5 |
|
5 |
|
6 |
6 |
|
6 |
|
7 |
7 |
|
7 |
|
8 |
8 |
|
8 |
|
9 |
9 |
|
9 |
|
X |
10 |
|
|
ISO 7064 MOD 11-2设置的附加码
|
A |
|
0 |
10
|
B |
|
1 |
11
|
C |
|
2 |
12
|
D |
|
3 |
13
|
E |
|
4 |
14
|
F |
|
5 |
15
|
G |
|
6 |
16
|
H |
|
7 |
17
|
I |
|
8 |
18
|
J |
|
9 |
19
|
K |
|
10 |
20
|
L |
|
11 |
21
|
M |
|
12 |
22
|
N |
|
13 |
23
|
O |
|
14 |
24
|
P |
|
15 |
25
|
Q |
|
16 |
26
|
R |
|
17 |
27
|
S |
|
18 |
28
|
T |
|
19 |
29
|
U |
|
20 |
30
|
V |
|
21 |
31
|
W |
|
22 |
32
|
X |
|
23 |
33
|
Y |
|
24 |
34
|
Z |
|
25 |
35
|
* |
|
26 |
36 |
ISO 7064 MOD 37-2设置的附加符
|
- 一位校验码计算
- 用递归法,按规则MOD 11-2为字符串0794设置一个校验码,此时M=11,r=2,n=5:
步骤j |
前次运行结果Pj |
+ |
下一字符值a(n-j+1) |
= |
中间和Sj |
|
中间和Sj |
× |
底数r |
= |
运算结果P(j+1)
|
1 |
0 |
+ |
0 |
= |
0 |
|
0 |
× |
2 |
= |
0
|
2 |
0 |
+ |
7 |
= |
7 |
|
7 |
× |
2 |
= |
14
|
3 |
14 |
+ |
9 |
= |
23 |
|
23 |
× |
2 |
= |
46
|
4 |
46 |
+ |
4 |
= |
50 |
|
50 |
× |
2 |
= |
100
|
最后,100+校验码值要与1(mod 11)同余,所以校验码为0,整个受保护字符串为07940。
- 多项式法
- 权数
- 权数公式:
- 前15个位置的权数见下表:
位置序号 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1
|
ISO 7064,MOD 11-2 |
5 |
8 |
4 |
2 |
1 |
6 |
3 |
7 |
9 |
10 |
5 |
8 |
4 |
2 |
1
|
ISO 7064,MOD 37-2 |
30 |
15 |
26 |
13 |
25 |
31 |
34 |
17 |
27 |
32 |
16 |
8 |
4 |
2 |
1
|
ISO 7064,MOD 97-10 |
53 |
15 |
50 |
5 |
49 |
34 |
81 |
76 |
27 |
90 |
9 |
30 |
3 |
10 |
1
|
ISO 7064,MOD 661-26 |
129 |
488 |
273 |
341 |
547 |
199 |
389 |
498 |
70 |
562 |
225 |
390 |
15 |
26 |
1
|
ISO 7064,MOD 1271-36 |
769 |
904 |
590 |
87 |
532 |
156 |
428 |
718 |
373 |
893 |
625 |
900 |
25 |
36 |
1
|
- 用多项式法,按规则MOD 11-2为字符串0794设置一个校验码:
字符位置i |
5 |
4 |
3 |
2 |
1
|
权数2(i-1)(mod 11) |
5 |
8 |
4 |
2 |
1
|
字符值ai |
0 |
7 |
9 |
4 |
|
乘积 |
0 |
56 |
36 |
8 |
|
乘积之和 |
|
|
|
|
100
|
乘积之和加上校验码必须与1(模11)同余,所以校验码为0,整个字符串为07940
- ^ 存档副本. www.iso.org. [2021-02-08]. (原始内容存档于2021-02-08).