這個工具是做什麼用的?
給開發與測試用。做兩岸相關系統(訂票、報名、金融開戶的表單)時, 欄位驗證常要處理台胞證與台灣居民居住證兩種號碼,但手邊沒有真實證件 可以測。這裡產生「格式與檢查碼都合規」的測試號碼,也能把使用者 回報打不進去的號碼貼進來,看是格式錯還是你的驗證寫錯。 計算全部在瀏覽器內完成,號碼不上傳。
順帶把話講在前面:產生出來的號碼不對應任何真實的人或證件,只是一串剛好通過公開編碼規則的數字, 不能拿去冒用他人身分,也不能拿去辦任何實務業務。
台胞證號碼幾碼?居住證又是幾碼?
卡式台胞證是 8 位純數字,一人一號、換證不換號;舊本式證件上的 10 碼是「8 碼號碼+2 碼加簽次數」。台灣居民居住證是 18 碼,沿用大陸身份證號規則:830000 開頭(台灣居民專用段)、接 8 碼出生日期、3 碼順序碼(第 17 碼奇男偶女)、最後 1 碼是檢查碼,算出 10 時寫作 X。
居住證檢查碼:ISO 7064 MOD 11-2
本頁「逐位算給你看」的那張表,用的就是公開的 MOD 11-2 演算法。前 17 位各乘上固定權重、加總之後除以 11 取餘數, 再用餘數查出最後那一碼:
- 權重(第 1 到第 17 位):
7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 - 餘數對照檢查碼:餘 0 → 1、餘 1 → 0、餘 2 → X、餘 3 → 9、餘 4 → 8、餘 5 → 7、餘 6 → 6、餘 7 → 5、餘 8 → 4、餘 9 → 3、餘 10 → 2
- 所以才會有 X:餘數 2 對應的檢查碼是 10,一位寫不下,規則規定寫成大寫 X。
台胞證沒有對應的公開演算法,所以那一頁只能驗格式,沒有逐位表格可看。
兩個分頁,兩種能耐
上方的兩個分頁不是同一件事的兩種寫法,而是兩種證件、兩種驗證深度。 選錯分頁最常見的後果,是把「格式通過」誤讀成「號碼合法」。
- 居住證(18 碼):有公開演算法,所以能產生、能逐位驗檢查碼,還能從號碼解出出生日期與性別。 要測「我的驗證邏輯寫對了沒」就用這一頁,錯一碼它就會告訴你正確的檢查碼是什麼。
- 台胞證(8 碼):只驗格式,也就是「是不是 8 位純數字」。 能做的是幫你確認欄位長度與字元集有沒有收對,不能告訴你號碼真假。
另外一個常見的分岔是 8 碼與 10 碼。手上證件印的是 10 碼時,那多半是舊本式, 後面兩碼是加簽次數而不是號碼的一部分;貼進台胞證分頁,它會直接這樣告訴你。
產一組測試用居住證號
- 停在「居住證(18 碼)」分頁,最上面那一塊就是產生器。
- 選男或女。選項一改就換一組新號,性別是寫在第 17 碼的奇偶上。
- 按「複製」把號碼帶走,或按「重新產生」再換一組。 產出的號碼一律以 830000 開頭、生日合理、檢查碼正確。
- 需要港澳段(810000、820000)的測試資料時,產生器不提供, 但你可以自己改前 6 碼後貼進下面的驗證框,它會照 MOD 11-2 重算, 告訴你正確的檢查碼是哪一碼。
使用者說號碼打不進去,怎麼查
- 把使用者回報的那組號碼原樣貼進「驗證居住證號碼」。 全形數字、全形的 x、空白與連字號都會先被清掉,不必自己整理。
- 看結果卡怎麼說。它會依序檢查四件事:長度與字元集、 前 6 碼是不是港澳台的地址碼、第 7 到 14 碼是不是合理的出生日期、 最後檢查碼對不對,並且只回報第一個不過的原因。
- 說「檢查碼不符」時,訊息會附上依前 17 碼算出來應該是哪一碼。 跟使用者手上的證件對一下,通常就是抄錯或漏打一位。
- 四項都過,號碼卻仍然打不進你的系統,那問題在你這邊。 對照下面的逐位表格,確認你的權重、取餘數與 X 的處理跟這裡一致。
- 台胞證的號碼改用另一個分頁查,並記得它只能查到格式為止。
把號碼帶進你的測試資料
複製鈕會把號碼原樣放進剪貼簿,沒有多餘的空白或分隔符號, 可以直接貼進表單、單元測試的固定值、seed 資料,或 API 測試工具。 手機上也可以長按那串等寬字自己選取。
- 一次只給一組:要湊多筆就重複「重新產生」加「複製」。 男女各產幾組,通常就夠覆蓋第 17 碼奇偶的分支。
- 逐位表格也可以帶走:驗證通過時下面會列出每一位的數字、權重與乘積, 寫單元測試或跟後端對算法時,直接把這張表貼進 pull request 比口頭描述清楚。
- 在測試資料裡標註來源:加一行註解說明這是產生器產生的假號碼, 日後接手的人才不會把它當成真的個資在保管。
- 截圖與工單一律用假號:居住證號含出生日期與性別,是個資。 要示範畫面就用這裡產生的號碼,不要貼真實證件的號碼。
台灣這邊的表單會遇到哪些寫法
- 8 碼與 10 碼混著來:使用者照著證件打,拿到舊本式的人會把加簽次數一起打進去。 欄位只收 8 碼時,至少要在錯誤訊息裡說清楚「只要前 8 碼」, 不要只丟一句格式錯誤。
- 末碼 X 的大小寫:居住證的檢查碼算出 10 時寫作 X。使用者會打小寫 x, 手機輸入法也可能給出全形的 x。收進來先轉成半形大寫再比對, 本頁就是這樣處理的。
- 全形數字與分隔符號:從 PDF、通訊軟體或試算表複製過來的號碼常帶全形數字、空白或連字號。 驗證前先正規化,可以少掉一整類「明明對的卻說錯」的客訴。
- 港澳居民也是同一套:港澳居民居住證用 810000、820000 開頭,18 碼的規則與台灣居民相同。 只認 830000 的欄位會把港澳的使用者擋在外面,本頁三段都收。
- 出生日期不要自己再猜:號碼裡已經含出生日期與性別,表單同時要求使用者再填一次時, 兩邊對不起來就該提示,而不是默默以其中一邊為準。
- 規則以主管機關公告為準:證件的樣式、號碼段與適用範圍都可能調整。 系統上線前請以核發機關的最新公告為準,本頁只處理公開的編碼規則。
先說清楚:假號碼不能拿去辦事
搜「台胞證號碼產生器」會看到不少旅行社文章勸你別用產生器—— 他們說的沒錯,但把用途混在一起了。拿隨機號碼去訂機票、辦保險, 輕則訂單作廢、重則涉及偽造文書,這種事本工具幫不上忙也不想幫。 產生器正當的用途只有一種:系統開發與測試。 要辦真的台胞證,請走旅行社或移民署的正規管道。
檢查碼通過不代表這張證件存在,只代表這串字元符合公開的編碼規則;真偽要循核發機關的查驗管道。 這頁只處理號碼本身,不會也不能查詢姓名、住址或任何個人資料。
另外提醒,居住證號碼可以直接解出出生日期與性別, 所以它在多數情境下都應該當成個資對待:不要放進公開的測試檔案, 也不要在截圖裡露出真實號碼。
常見問題
台胞證號碼有幾碼?
卡式台胞證是 8 位純數字,一人一號、換證不換號。舊本式證件上看到 10 碼,是 8 碼號碼加上 2 碼加簽次數。號碼裡沒有英文字母,跟台灣身分證(1 英文+9 數字)完全不同。
台灣居民居住證號碼是什麼格式?
18 碼,完全沿用大陸身份證號的規則:前 6 碼固定 830000(台灣居民專用段)、7-14 碼是出生日期、15-17 碼是順序碼(第 17 碼奇數為男、偶數為女)、第 18 碼是檢查碼,算出 10 時寫成 X。
這裡產生的號碼可以拿去訂機票或辦銀行開戶嗎?
不行,也請不要。產生的號碼只保證「格式與檢查碼合規」,並不對應任何真實證件。用途是開發與測試:驗證你的系統收不收這種格式、欄位驗證寫對了沒。填假證號辦理實務業務可能涉及偽造文書。
為什麼台胞證只能驗格式、不能驗合法性?
因為主管機關從未公開台胞證號碼的檢查碼或編排規則。居住證有公開演算法(GB 11643 的 MOD 11-2)所以能逐位驗證;台胞證沒有,任何工具宣稱能驗台胞證「真偽」都超出公開資訊的範圍。
輸入的號碼會被上傳嗎?
不會。驗證與產生全部在你的瀏覽器內計算,這頁沒有任何把號碼送出去的網路請求,你打的與產生的號碼重新整理就不見了。唯一會留下的是你停在哪個分頁、居住證選的性別:選項記在你的瀏覽器,不含證號,回訪時工具上方會出現「恢復預設」,按一下就清除。
居住證跟台胞證差在哪?
台胞證是出入境證件(進出大陸用),居住證是在大陸長住的身分證明(2018 年開放申請,要有穩定住所或就學就業滿半年才能辦)。兩者號碼格式完全不同:台胞證 8 碼、居住證 18 碼。
資料來源
- 居住證 18 碼的組成(地址碼、出生日期碼、順序碼、檢查碼)沿用公民身份號碼的國家標準 GB 11643;檢查碼採 ISO 7064 的 MOD 11-2,餘數 2 時寫作 X。
- 港澳台居民居住證的地址碼分段(香港 810000、澳門 820000、台灣 830000)為該制度公開的號碼段。
- 台胞證的號碼編排與檢查碼規則,核發機關未公開, 本頁因此只做格式檢查;任何宣稱能驗台胞證真偽的工具都超出公開資訊的範圍。
- 證件樣式與號碼規則都可能調整,實際以核發機關最新公告為準;申辦事宜請洽正規管道。
更多證件工具
台灣這邊的證件在身分證產生器與驗證:身分證字號、居留證號(統一證號)的產生、驗證與縣市解析。公司行號的統一編號驗證與產生器也在站上。
相關工具
隱私:產生與驗證都在你的瀏覽器裡計算,號碼不會上傳、不會儲存, 這頁沒有任何把號碼送出去的網路請求,也對錄影分析工具遮蔽輸入內容。 唯一會留下的是你停在哪個分頁、居住證選的性別:選項記在你的瀏覽器,不含證號; 回訪時工具上方會出現「恢復預設」,按一下就清除。
