本工具只做算术校验。一个号码即便通过校验,也未必属于任何人。你输入的内容不会发送到任何地方。
本工具能校验什么,不能校验什么
香港身份证和台湾身份证字号都带有一个由其余字符推算出来的校验位,本工具会把它重新算一遍。这能抓出录入和抄写错误,而这正是它的用途。它无法告诉你某个号码是否真的签发过、目前是否仍然有效,或者持有人是谁 — 那必须向发证机关核实。
香港身份证校验位的算法
香港身份证由一到两个英文字母、六位数字,以及一个写在括号里的校验字符组成。字母的取值从 A=10 一直到 Z=35;没有首位字母时按 36 计算。八个主体字符分别乘以从 9 递减到 2 的权重后相加,校验字符就是使总和能被 11 整除的那个值。余数为 10 时写作字母 A。
以 A123456 为例:36×9 + 10×8 + 1×7 + 2×6 + 3×5 + 4×4 + 5×3 + 6×2 = 481。481 mod 11 = 8,而 11 − 8 = 3,所以完整号码是 A123456(3)。
台湾身份证校验位的算法
台湾身份证字号由一个英文字母和九位数字组成。字母对应首次户籍登记所在县市的两位数代码,该代码的第一位按权重 1 计算、第二位按权重 9 计算;随后八位数字的权重从 8 递减到 1,最后的校验位权重为 1。号码有效时,总和会是 10 的倍数。
字母后面的第一位数字是性别标记:1 表示男性,2 表示女性。自 2021 年起,8 和 9 用来标示发给外来人口的统一证号。
生成测试数据
「生成」标签页会创建仅符合校验规则的号码。它们并非签发给任何人,也无法通过真实的身份核验——它们的用途是让你测试表单校验逻辑、填充测试环境的数据库,或编写测试用例,而不必使用真人的号码。由于校验算法本身是公开的,生成一个格式正确的号码并不会透露任何本页未曾说明的信息。
请勿把生成的号码写入正式记录,也不要把校验通过视为身份验证。真正的验证必须向签发机关核查。
什么时候会用到
- 在表单字段写入数据库之前先做校验
- 排查历史数据集中的抄写错误
- 生成格式正确、能通过自家校验逻辑的测试数据
- 弄清楚第三方 API 为什么拒绝某个号码