筆記目錄

Skip to content

臺灣證號檢核

當一個系統有多種台灣的證號需要檢核時,常看到有人將身分證、統一證號等證號分別寫成不同的 API。這是因為網路上有很多現成的範例可以找,如果要加入驗證,直接找一個來抄就可以了。但是當檢核範例來源不同時就容易造成命名和參數的不同,當然比較 Sense 的人,會將不同的證號檢核 API 調成相同的命名規則與介面格式。

有些人可能沒有注意到,不論是「國民身分證號」、「臺灣地區居留證統一證號」、「外僑居留證統一證號」、「遊民證號」和「新式外來人口統一證號」,它們的檢查號驗證都是同一套邏輯,差別只在於第二碼。所以比較正確的檢核證號方式應該是先建立一個共同的底層,再將各種證號傳入參數來驗證第二碼。

編碼原則

完整的證號格式如下:

區域碼性別碼身分碼流水碼檢查號
A123456789

性別碼規則:

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

TIP

  • 遊民證號男 Y 女 X 這並不是筆誤,推測是因為染色體的關係,所以字母順序不是先男後女。
  • 「臺灣地區居留證統一證號」和「外僑居留證統一證號」統合成「新式外來人口統一證號」後,改用身分碼來區隔是台灣地區還是外僑。

英文轉數字對應關係如下:

1011121314151617341819202122352324252627282932303133

每位數的加權權證:

N0N1N2N3N4N5N6N7N8N9N10
19876543211

性別碼的處理方式:

  • 數字:直接使用。
  • 英文:照上面對應關係轉成數字後,取個位數。

檢查號計算公式如下: (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

異動歷程

  • 2023-01-16 初版文件建立。