台灣身分證字號編碼結構與檢核原理
中華民國國民身分證統一編號(National Identification Number)由一碼大寫英文字母與九碼阿拉伯數字組成,共計十個字元。其格式與加權驗證公式如下:
1. 字元結構定義
- 第 1 碼(字母):代表初次申領戶籍之縣市代碼(A 至 Z)。
- 第 2 碼(數字):代表性別,本國籍男性為
1,女性為2(居留證或外籍人士可能為其他特定代碼)。 - 第 3 至 9 碼(數字):一般流水流水號碼。
- 第 10 碼(數字):加權模數檢查碼(Check Digit)。
加權檢查碼演算法公式
設身分證字號為 $C_1 D_1 D_2 D_3 D_4 D_5 D_6 D_7 D_8 D_9$:
- 首先將首碼英文字母 $C_1$ 依據內政部代碼表轉換為二位數整數 $L_1 L_2$(例如 A 轉為 10,B 轉為 11,F 轉為 15)。
- 計算加權總和 $S$: $$S = (L_1 \times 1) + (L_2 \times 9) + (D_1 \times 8) + (D_2 \times 7) + (D_3 \times 6) + (D_4 \times 5) + (D_5 \times 4) + (D_6 \times 3) + (D_7 \times 2) + (D_8 \times 1)$$
- 計算檢查碼 $D_9$: $$R = S \pmod{10}$$ $$D_9 = (10 - R) \pmod{10}$$
- 若計算所得之 $D_9$ 與身分證字號最後一碼完全相同,則該身分證字號符合邏輯檢核規則。
軟體開發與測試應用場景
在現代軟體工程中,線上表單與會員註冊系統經常需要對台灣身分證字號進行格式校驗。常見之測試用途包含:
- 前端驗證測試:驗證表單即時檢核邏輯是否能正確辨識有效字號與阻擋無效字號。
- 後端 API 單元測試:撰寫 Mock 測試資料,確保身份驗證邏輯與資料庫寫入正常。
- 邊界測試 (Boundary Testing):測試停發縣市代碼(如 L 台中縣、R 台南縣、Y 陽明山管理局)之相容性。
- 效能壓力測試:批次產生大量符合規則之測試字號進行負載效能檢驗。