Skip to content

臺灣證號檢核

TLDR

  • 台灣各類證號(身分證、居留證、遊民證號等)的檢查碼驗證邏輯完全一致。
  • 建議建立統一的底層驗證邏輯,而非針對每種證號分別撰寫 API,以簡化維護成本。
  • 證號驗證的核心差異僅在於「第二碼(性別碼)」的對應規則。
  • 英文代碼需轉換為對應數字,並配合加權權重進行模數運算(Modulo 10)檢核。

證號檢核邏輯統一化

什麼情況下會遇到這個問題:當系統需要同時支援國民身分證、居留證、遊民證號等多種證號驗證時。

若針對每種證號分別撰寫驗證 API,容易因來源不同導致命名與參數不一致,增加維護複雜度。事實上,上述所有證號的檢查碼驗證邏輯皆相同,僅需建立一個共同的底層邏輯,並將各類證號的第二碼規則作為參數傳入即可。

編碼原則與驗證規則

完整的證號格式包含區域碼、性別碼、身分碼、流水碼與檢查號。

性別碼對應規則

不同證號類型的性別碼定義如下:

證號類型
國民身分證號12
臺灣地區居留證統一證號AB
外僑居留證統一證號CD
遊民證號YX
新式外來人口統一證號89

TIP

  • 遊民證號的男女代碼(Y/X)並非筆誤,其字母順序與一般邏輯不同。
  • 「臺灣地區居留證統一證號」與「外僑居留證統一證號」已統整為「新式外來人口統一證號」,改由身分碼區分地區。

檢查碼計算流程

  1. 英文轉數字:將首位區域碼與第二碼(若為英文)轉換為對應數值。若為英文,轉換後取個位數。
  2. 加權計算:各位數對應權重如下:
N0N1N2N3N4N5N6N7N8N9N10
19876543211
  1. 驗證公式: 將轉換後的數值與權重相乘並加總,最後進行模數運算:
    (N0 × 1 + N1 × 9 + N2 × 8 + N3 × 7 + N4 × 6 + N5 × 5 + N6 × 4 + N7 × 3 + N8 × 2 + N9 × 1 + N10 × 1) % 10 = 0

程式碼範例

針對證號驗證的實作,可參考以下開源實作:IdCardValidator

異動歷程

    • 初版文件建立。