校驗碼系統

維基百科,自由的百科全書

校驗碼系統是產生校驗碼並校驗包括校驗碼在內的字符串的一套規則。它可以防止在抄錄和鍵入字符串時產生的錯誤。

查錯類型[編輯]

  • 單一字符替代錯誤,如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).