2008年9月25日 星期四

判斷身份證字號的處理邏輯

http://blog.nahoya.com/archives/2007_12/177

http://zh.wikipedia.org/wiki/%E4%B8%AD%E8%8F%AF%E6%B0%91%E5%9C%8B%E5%9C%8B%E6%B0%91%E8%BA%AB%E5%88%86%E8%AD%89

處理邏輯
1.判斷身份證字號的字串長度,長度必須等於10個字元。
2.判斷身份證字號的字串格式,第一個字元必須是英文字母,第二個字元必須是數字1或數字2,其他的字元必須是數字。
英文
縣市 / 地區
數字
A
台北市
10
B
台中市
11
C
基隆市
12
D
台南市
13
E
高雄市
14
F
台北縣
15
G
宜蘭縣
16
H
桃園縣
17
I
嘉義市
34
J
新竹縣
18
K
苗栗縣
19
L
台中縣
20
M
南投縣
21
英文
縣市 / 地區
數字
N
彰化縣
22
O
新竹市
35
P
雲林縣
23
Q
嘉義縣
24
R
台南縣
25
S
高雄縣
26
T
屏東縣
27
U
花蓮縣
28
V
台東縣
29
W
金門縣
32
X
澎湖縣
30
Y
陽明山管理局
31
Z
連江縣
33
3.每個縣市都有一個相對應的英文字母代表,每個英文字母也都有一個對應的二位數
4.將英文字母轉換為二個數字字元與原來的數字字串進行合併,轉換為十一個數字字元。
5.轉換後的數字字串總共有11個數字字元,將前十個數字進行如下的運算
第一個數字+
第二個數字*9+
第三個數字*8+
第四個數字*7+
第五個數字*6+
第六個數字*5+
第七個數字*4+
第八個數字*3+
第九個數字*2+
第十個數字*1
6.第5個步驟運算得到的和,只取個位數部份
7.用十減去第6步驟得到的值,與第4步驟得到的值的第十一個數字字元進行比對。
如果相同,表示身份證字號是正確的
如果不相同,表示身份證字號是不正確的

沒有留言: