首先將身份證中的英文字母轉為數字,A=1, B=2, C=3, .... Z=26。
然後按以下公式計算︰
先計算
第1位數字 * 8 加
第2位數字 * 7 加
第3位數字 * 6 加
第4位數字 * 5 加
第5位數字 * 4 加
第6位數字 * 3 加
第7位數字 * 2
的總和;
以A123456(3)為例
A * 8 = 1 * 8 = 8
1 * 7 = 1 * 7 = 7
2 * 6 = 2 * 6 = 12
3 * 5 = 3 * 5 = 15
4 * 4 = 4 * 4 = 16
5 * 3 = 5 * 3 = 15
6 * 2 = 6 * 2 = 12
總和是85。
然後計算85除11的餘數,再用11減去剛才的餘數便是驗證碼 (CHECK DIGIT)。
85 除 11,餘數是8
11 - 8 = 3
因此驗證碼 (CHECK DIGIT)是 3。
如最後計算出來的驗證碼 (CHECK DIGIT)是10,以A表示;
============更新============
先把英文換成數字,A=10,B=11,C=12,............Z=35
看開首是一個英文字還是兩個英文字
如果是一個英文字
總和S = 36 * 9 + 英文字 * 8
如果是兩個英文字
總和S = 英文字1 * 9 + 英文字2 * 8
之後的六位數字分別乘以7,6,5,4,3,2
把總和S 除11,得到餘數R
11-R就是CHECK DIGIT
以A123456(3)為例
A = 10
36 * 9 = 324
A * 8 = 10 * 8 = 80
1 * 7 = 1 * 7 = 7
2 * 6 = 2 * 6 = 12
3 * 5 = 3 * 5 = 15
4 * 4 = 4 * 4 = 16
5 * 3 = 5 * 3 = 15
6 * 2 = 6 * 2 = 12
總和是481。
然後計算481除11的餘數,再用11減去剛才的餘數便是驗證碼 (CHECK DIGIT)。
481 除 11,餘數是8
11 - 8 = 3
因此驗證碼 (CHECK DIGIT)是 3。
如最後計算出來的驗證碼 (CHECK DIGIT)是10,以A表示;
36 * 9 = 324
A * 8 = 10 * 8 = 80
1 * 7 = 1 * 7 = 7
2 * 6 = 2 * 6 = 12
3 * 5 = 3 * 5 = 15
4 * 4 = 4 * 4 = 16
5 * 3 = 5 * 3 = 15
6 * 2 = 6 * 2 = 12
總和是481。
然後計算481除11的餘數,再用11減去剛才的餘數便是驗證碼 (CHECK DIGIT)。
481 除 11,餘數是8
11 - 8 = 3
因此驗證碼 (CHECK DIGIT)是 3。
如最後計算出來的驗證碼 (CHECK DIGIT)是10,以A表示;
??????
回覆刪除