2017年5月6日 星期六

如何計算香港身份證驗證碼 (CHECK DIGIT)?

以身份證A123456(3)為例,此身份證的CHECK DIGIT為3。

首先將身份證中的英文字母轉為數字,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表示;

1 則留言: