身份证号怎么校验?第 18 位与地区码

一、身份证第 18 位是怎么算出来的

前 17 位每一位乘一个固定权重,求和后对 11 取模,再查表得到校验字符:

位置1234567891011121314151617
权重7910584216379105842

余数对应校验字符:1 0 X 9 8 7 6 5 4 3 2(余数 2 时是 X,代表罗马数字 10)。

11010519491231002 为例,加权求和取模后落在 X 的位置,所以完整号码是 11010519491231002X。校验位的作用只有一个:发现录入时的错位与笔误,它不保证号码真实存在。

二、一个号码能读出多少信息

11010519491231002X 解码后:

字段
地区码110105 → 北京市 市辖区
出生日期1949-12-31
顺序码002,末位 2 为偶数 →
校验位X
生肖 / 干支牛 / 己丑
星座摩羯座(12.22~1.19)

三点实用信息:

  • 顺序码末位奇数为男、偶数为女,这是身份证里性别的编码规则;
  • 小写 x 也能识别:输入 11010519491231002x 会自动转为大写并校验通过;
  • 改任意一位都会失败:把校验位 X 改成 1 会直接报「校验位错误」,位数不足 18 位则报无效。

三、15 位升 18 位:补的不是两位

老的 15 位身份证 110105491231002 升级后是 11010519491231002X

  1. 年份 49 补成 1949加的是「19」两位);
  2. 末尾加上按算法算出的校验位。

所以 15 位 → 18 位是「补年份前缀 + 补校验位」,中间的地区码与顺序码原样保留。老号码在场合理应停止使用,但做数据清洗时经常要批量转换。

四、另外三类号码,校验强度完全不同

类型校验方式能判什么判不了什么
统一社会信用代码加权和取模 31(GB 32100-2015)结构是否合法、抄写有没有错企业是否真实登记
手机号号码段 → 运营商运营商、号段是否有效精确归属地(携号转网会变)
银行卡号Luhn 校验 + BIN 段位数、校验、卡组织具体发卡行(BIN 每月变动)
车牌省份简称 + 发牌机关字母省级归属与城市个体车主信息

实测几个例子:

  • 统一社会信用代码 91110000802100433B → 校验通过,部门「工商(市场监管)」、机构类型「企业」、地区「北京市」;把末位改成 C 立刻报错并提示正确校验位应是 B
  • 手机号 13800138000中国移动19912345678中国电信12345678901 → 无效(不是合法号段);
  • 银行卡 6222021234567894 → Luhn 通过、银联4111111111111111 → Luhn 通过、Visa;随手编的号基本都过不了 Luhn;
  • 车牌 京A12345 → 北京市(直辖市字母不分城区);粤B1025 → 深圳;粤X12345 → 顺德;川G12345 → 成都(增补号段)。

五、两个必须记住的边界

1. 校验位正确 ≠ 号码真实。 伪造一个校验位正确的身份证号或信用代码,在数学上非常容易。工具只能告诉你「格式没抄错」,核实真伪必须走官方渠道(国家企业信用信息公示系统、公安部门核验接口)。

2. 号码里没有校验位也判不了。 手机号精确归属地需要 7 位号段库、银行卡发卡行需要 BIN 库,两者都按月变动且部分不对外公开。宁可明确说「查不到」,也不给一个可能过时的答案——错误归属地比没有答案更糟。

六、直接算

号码校验计算器:身份证、信用代码、手机号、银行卡、车牌批量校验

身份证信息查询:地区、生日、性别、生肖与星座解析

车牌归属地查询:省份与发牌机关字母对照

本站文章为个人使用经验的原创整理,除已注明来源的引用外均为本人撰写。文中涉及的软件名称、商标、截图等归各自权利人所有,引用仅用于说明与交流。如认为本站内容侵犯了你的合法权益,请通过「关于本站」页面的联系方式告知,核实后将及时更正或删除。