介紹台灣身份證字號的驗證規則,以及如何使用 Python 撰寫身分證字號驗證程式。

台灣身份證字號驗證規則

若要驗證台灣的身分證字號,首先將第一個英文字母依照下表轉為數字:

代號數值縣市
A10台北市
B11台中市
C12基隆市
D13台南市
E14高雄市
F15台北縣
G16宜蘭縣
H17桃園縣
I34嘉義市
J18新竹縣
K19苗栗縣
L20台中縣
M21南投縣
N22彰化縣
O35新竹市
P23雲林縣
Q24嘉義縣
R25台南縣
S26高雄縣
T27屏東縣
U28花蓮縣
V29台東縣
W32金門縣
X30澎湖縣
Y31陽明山
Z33連江縣

接著將轉出數值的十位數與個位數拆開,合併身份證字號的後 9 個數字,總共會有 11 個數字,將中間的 9 個數字依序乘以 987、…、1 後,把所有數字加總起來,再計算除以 10 的餘數,若餘數為 0,則代表身分證字號驗證成功。

E160235953 這一筆身分證字號為例,E 轉為數字後變成 14,加上後面的 9 個數字就變成 14160235953,接著把將中間的 9 個數字依序乘以 91

1 + 4*9 + 1*8 + 6*7 + *6 + 2*5 + 3*4 + 5*3 + 9*2 + 5*1 + 3 = 150

最後計算出來的總合為 150,除以 10 的餘數為 0,所以這一組身分證字號有通過驗證檢核。

Python 驗證程式

以下是一個驗證台灣身分證字號的 Python 函數:

def verifyID(id):
    # 英文代號對應數值表(個位數乘以 9 加上十位數)
    alphaTable = {'A': 1, 'B': 10, 'C': 19, 'D': 28, 'E': 37, 'F': 46,
            'G': 55, 'H': 64, 'I': 39, 'J': 73, 'K': 82, 'L': 2, 'M': 11,
            'N': 20, 'O': 48, 'P': 29, 'Q': 38, 'R': 47, 'S': 56, 'T': 65,
            'U': 74, 'V': 83, 'W': 21, 'X': 3, 'Y': 12, 'Z': 30}

    # 計算總和值
    sum = alphaTable[id[]] + int(id[1]) * 8 + int(id[2]) * 7 + int(id[3]) * 6 + int(id[4]) * 5 + int(id[5]) * 4 + int(id[6]) * 3 + int(id[7]) * 2 + int(id[8]) * 1 + int(id[9])

    # 驗證餘數
    if sum % 10 == :
        print("身分證字號驗證通過")
    else:
        print("身分證字號有誤")

呼叫 verifyID 函數,傳入要進行驗證的身分證字號,即可顯示驗證結果:

# 要進行驗證的身分證字號
id = "E160235953"

# 驗證的身分證字號
verifyID(id)
身分證字號驗證通過