← ClaudeAtlas

taiwan-id-checklisted

統一編號與國民身分證統一編號的檢核碼驗證——純計算,不需要網路與 API 金鑰。統一編號檢查、統編對不對、身分證字號驗、身分證字號驗證、檢核碼、check digit 的問題適用。查詢公司登記資料、個人資料不適用(本技能只做數學檢核,不查任何資料庫)。
tahodev/baodao-skill · ★ 1 · AI & Automation · score 77
Install: claude install-skill tahodev/baodao-skill
# taiwan-id-check > 實測日:2026-09-19(最近一次端對端實測;數值基準日各自標於內文) 用財政部公布的檢核邏輯驗證統一編號(統編)與身分證字號。**純計算**,不連網、不需金鑰、不查任何資料庫——只能回答「這串號碼的檢核碼對不對」,不能回答「這家公司是否存在」。 ## 1. 統一編號(8 碼) 財政部檢核邏輯:各碼乘上權重 `1,2,1,2,1,2,4,1`,乘積的十位數與個位數相加後總和,能被 5 整除即為合法。**特例:第 7 碼是 7 時**,該位乘積(7×4=28)的「各位數和」可視為 0 或 1 計算,任一成立即合法(財政部營利事業統一編號檢查邏輯的明文規定)。 ```bash python3 - <<'PY' def ubn_ok(n: str) -> bool: if len(n) != 8 or not n.isdigit(): return False w = [1, 2, 1, 2, 1, 2, 4, 1] ds = lambda p: p // 10 + p % 10 # 乘積的各位數和 base = sum(ds(int(d) * k) for d, k in zip(n, w)) if base % 5 == 0: return True if n[6] == '7': # 第 7 碼 7 的特例 c = ds(7 * 4) return (base - c + 0) % 5 == 0 or (base - c + 1) % 5 == 0 return False for n in ['22099131', '97176270']: print(n, ubn_ok(n)) PY ``` 2026-09-19 實測(公開公司統編):台積電 `22099131`、中華電信 `96979933` 合法;台灣大哥大 `97176270`(第 7 碼 7)只在特例路徑下合法,可驗證特例實作有無;把任一碼改動(如 `22099132`)即判非法。 ## 2. 國民身分證統一編號(1 英文字母 + 9 碼數字) 檢核邏輯(內政部):首字母依對照表轉成兩位數(A=10、B=11 … I=34、O=35、W=32、X=30、Y=31、Z=33,跳過容易混淆的順序),十位數乘 1、個位數乘 9;之後 8 碼數字依序乘 8,7,6,5,4,3,2,1,最後一碼檢核碼乘 1。全部相加能被 10 整除即合法。 ```bash python3 - <<'PY' def pid_ok(s: str) -> bool: s = s.strip().upper() if len(s) != 10 or not s[0].isalpha() or not s[1:].isdigit(): return False L = {'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