校驗碼

校驗碼

校驗碼通常是一組數字的最後一位,由前面的數字通過某種運算得出,用以檢驗該組數字的正確性。常見的校驗碼有中華人民共和國居民身份證的最後一位,ISBN號碼的最後一位等。

基本介紹

  • 中文名:校驗碼
  • 外文名:Check code
  • 概述:代碼作為數據在向計算機
  • 校驗原理:系統內部預先設定根據
組成,校驗原理,校驗碼算法,算法舉例,身份證校驗碼,組織機構校驗碼,參閱,

組成

凡設有校驗碼的代碼,是由本體碼與校驗碼兩部分組成(如組織機構代碼),本體碼是表示編碼對象的號碼,校驗碼則是附加在本體碼後邊,用來校驗本體碼在輸入過程中準確性的號碼。每一個本體碼只能有一個校驗碼,校驗碼通過規定的數學關係得到。

校驗原理

系統內部預先設定根據校驗方法所導出的校驗公式編製成的校驗程式,當帶有校驗碼的代碼輸入系統時,系統利用校驗程式對輸入的本體碼進行運算得出校驗結果之後,再將校驗結果與輸入代碼的校驗碼進行對比來檢測輸入的正確與否。如果兩者一致,則表明代碼輸入正確,系統允許進入,如果不一致,則表明代碼輸入有誤,系統拒絕進入,並要求代碼重新輸入。

校驗碼算法

不同的校驗碼的算法常常不同。常見的校驗碼算法有:碼距奇偶檢驗、海明校驗、循環冗餘校驗

算法舉例

身份證校驗碼

按照中華人民共和國國家標準GB11643-1999規定中華人民共和國公民身份號碼校驗碼的計算方法即為ISO 7064:1983.MOD 11-2校驗碼計算法。
假設某一17位數字是
17位數字
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
加權因子
7
9
10
5
8
4
2
1
6
3
7
9
10
5
8
4
2
368
計算17位數字各位數字與對應的加權因子的乘積的和S:1×7+2×9+3×10+4×5+5×8+6×4+7×2+8×1+9×6+0×3+1×7+2×9+3×10+4×5+5×8+6×4+7×2=368; 計算S÷11的餘數T:368 mod 11=5; 計算(12-T)÷11的餘數R,如果R=10,校驗碼為字母“X”;如果R≠10,校驗碼為數字“R”:(12-5)mod 11=7。 該17位數字的校驗碼就是7,聚合在一為123456789012345677
加權因子公式為Wi=2^(n-1)(mod 11),n為數字序列從右到左的從1開始的順序數。
ai 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 ?
Wi 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1

組織機構校驗碼

全國組織機構代碼由八位數字(或大寫拉丁字母)本體代碼和一位數字(或大寫拉丁字母)校驗碼組成。校驗碼按下列公式計算:
8
C9=11-MOD(∑Ci×Wi,11)
i=1
MOD-表示求余函式;i-表示代碼字元從左至右位置序號;
Ci-表示第i位置上的代碼字元的值,採用下列“代碼字元集”所列字元;
C9-表示校驗碼;
Wi-表示第i位置上的加權因子,其數值如下表:
加權因子
i
1
2
3
4
5
6
7
8
Wi
3
7
9
10
5
8
4
2
當MOD函式值為1(即C9=10)時,校驗碼套用大寫拉丁字母“X”表示;當MOD函式值為0(即C9=11)時,校驗碼仍用“0”表示;當C9的值為1至9時,校驗碼直接用C9的值表示。

參閱

相關詞條

熱門詞條

聯絡我們