校验码系统

维基百科,自由的百科全书

校验码系统是产生校验码并校验包括校验码在内的字符串的一套规则。它可以防止在抄录和键入字符串时产生的错误。

查错类型[编辑]

  • 单一字符替代错误,如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

  • 两位校验码
    • 递归法
    • 多项式法
  1. ^ 存档副本. www.iso.org. [2021-02-08]. (原始内容存档于2021-02-08).