身份证号能看出什么?籍贯、生日、性别与校验位详解

2026-10-15约 8 分钟文本处理涉及 1 个工具

身份证号不是随机数字串:前 6 位是行政区划、中间 8 位是出生日期、第 17 位决定性别、最后一位是加权算出来的校验码。读懂这四段,就能判断一个号码是不是抄错了,也能知道它其实给不出哪些信息。

核心要点
  • 18 位身份证号分四段:前 6 位行政区划、第 7 至 14 位出生日期、第 15 至 17 位顺序码、末位校验码
  • 校验码由前 17 位加权求和后对 11 取余得到,余数为 2 时校验码是 X,所以末位 X 完全合法
  • 第 17 位是性别位,奇数为男、偶数为女;15 位号码的性别位在第 15 位
  • 校验通过只说明号码前后自洽,不能证明这个号码真实存在或属于本人
  • 地址码对应签发的行政区划,不等于持证人现在的居住地,部分历史代码已撤销或合并
  • 身份证号属于个人敏感信息,不应粘贴到公开场合,也不应写进日志与埋点

#18 位号码由四段拼成

身份证号的每一位都有固定含义,18 位号码可以拆成地址码、出生日期码、顺序码和校验码四段。 拆开看是这样的:

位次长度含义
第 1 至 6 位6 位地址码,签发的县级行政区划代码
第 7 至 14 位8 位出生日期,格式为年年年年月月日日
第 15 至 17 位3 位顺序码,同地区同日期出生者的流水号
第 18 位1 位校验码,由前 17 位算出来的 0 至 9 或 X

用 身份证信息查询 粘贴一个号码,它会把出生日期、性别、年龄、星座、生肖和地区一次性解析出来,并在本地完成校验。

其中有两个位置值得单独记住:

  • 第 17 位决定性别,奇数分配给男性、偶数分配给女性
  • 第 7 至 14 位是出生日期,所以星座与生肖都能直接推导,不需要额外输入
说明

地址码是签发时的行政区划代码,不是持证人的现居住地。行政区划会撤县设区、合并或更名,早期号码里出现的旧代码在现行区划表里可能已经查不到,这时解析结果会指向代码对应的历史地区。

#校验位是怎么算出来的

校验码的算法只有两步:前 17 位分别乘以固定权重后求和,再把总和对 11 取余,用余数查表得到末位。 这套规则来自 GB 11643,是 18 位号码能自校验的基础。

每一位的权重是固定的,从第 1 位到第 17 位依次为:

位序1234567891011121314151617
权重7910584216379105842

求和结果除以 11 得到余数,余数与校验码一一对应:

余数012345678910
校验码10X98765432

#完整算一遍

以号码 11010519491231002X 为例,前 17 位与权重逐位相乘:

号码   1  1  0  1  0  5  1  9  4  9  1  2  3  1  0  0  2
权重   7  9 10  5  8  4  2  1  6  3  7  9 10  5  8  4  2
乘积   7  9  0  5  0 20  2  9 24 27  7 18 30  5  0  0  4
总和 = 167
167 ÷ 11 = 15 余 2,余数 2 对应校验码 X

所以这个号码的末位是 X。反过来说,如果末位不是 X 而是别的字符,前 17 位相同的情况下校验就不通过 —— 最常见的原因就是手抄时改了一位数字却没重算末位。

技巧

想手工验证时不用逐位算乘法:先用前 17 位算出总和,只记住「余数 2 对应 X」这一个特殊项即可。余数是 10 时校验码为 2,余数是 1 时校验码为 0,这两个也容易被记反。

#15 位号码怎么升成 18 位

15 位号码升 18 位只做两件事:在第 7 位前补上「19」,再按前 17 位重算校验码补在末位。

用同一个例子走一遍:

15 位:  110105  491231002
        地址码  出生日期(两位年)+顺序码
升位:   110105 19 491231002
18 位:  11010519491231002 + 校验码 X
结果:   11010519491231002X

两者的差别集中在三处,混淆时容易算错:

对比项15 位18 位
出生日期6 位,年份只保留后两位8 位,含完整四位年份
校验位没有末位,0 至 9 或 X
性别位第 15 位第 17 位

15 位号码在 1999 年 10 月起停止签发,一代身份证自 2013 年 1 月 1 日起停止使用,但不少老系统里仍按 15 位存放历史数据,身份证信息查询 两种位数都能解析。

注意

升位规则统一按 19 补世纪,所以 15 位号码只能还原出 19xx 年的出生日期。如果一份数据里混有 2000 年后出生的人,他们的号码不可能是 15 位格式,遇到这种记录应视为脏数据而不是待升位的号码。

#解析结果能证明什么、不能证明什么

校验通过只说明号码在格式上自洽,即前 17 位与末位是配套的,它能排除「抄错一位」这类错误,但不能证明号码真实存在。

具体边界可以这样区分:

  • 能证明:出生日期、性别、地址码对应的行政区划,这些由编码规则直接决定
  • 不能证明:号码是否真实签发、是否属于当前填写者、持有人现在住在哪里
  • 会变的部分:年龄与星座随当前日期变化,用工具查询时按当天日期计算

需要批量核对时,先用 正则表达式测试 把候选号码按 18 位格式筛出来,再逐个校验,比整份表格肉眼扫一遍可靠得多。

#处理身份证号的隐私边界

身份证号是个人敏感信息,无论用哪个工具处理,都不应该出现在公开场合、日志和埋点里。

落到日常操作上,有几条底线:

  • 不要粘贴到公开的聊天群、工单系统、在线协作表格或截图里
  • 不要写进应用日志、错误堆栈、监控上报字段
  • 展示时脱敏,常见做法是只保留前 3 位与后 4 位,其余用星号替换
  • 测试环境一律使用虚构号码,不要拿真实数据当测试样本
  • 收集前先问「是否真的必要」,能只存校验结果就不要存原号码

批量脱敏可以先用 正则表达式测试 一次匹配 18 位数字串,再用 查找替换 按规则替换成掩码。这一步要在数据入库或外发之前完成,事后再补等于已经泄露过一次。

从 PDF 或扫描件复制号码时还有一种情况:数字可能是全角字符,看起来一样但校验不通过,用 全角半角转换 转成半角再解析即可。

要点

本文提到的解析全部在浏览器本地完成,号码不会上传到服务器。但这只解决「传输环节」的问题:把敏感号码交给任何在线服务之前,都应该先确认它是否真的需要拿到原文,能本地离线处理的就不要联网。

#常见问题

#末位校验码是 X,是正常的吗?

正常。校验码的取值是 0 至 9 或 X 共 11 种,X 代表余数为 2 的情况,属于标准定义的一部分,不是占位符也不是错误。录入系统时注意大小写:规范里用大写 X,部分老系统只接受小写 x,遇到校验不过可以先确认这一点。

#15 位身份证号现在还能用吗?

作为证件已经失效:15 位号码在 1999 年 10 月起停止签发,一代身份证自 2013 年 1 月 1 日起停止使用。但老系统里常留存 15 位格式的历史数据,需要解析这类数据时,可以直接输入 15 位号码,工具会按同样规则解析出生日期、性别与地区。

#为什么查出来的地区和身份证上的地址不一样?

因为地址码记录的是签发时的户籍所在地,与现在的居住地、实际办证地都可能不同。另外行政区划本身会调整,撤县设区、区划合并之后,同一个代码对应的名称也会变化,早期号码里的代码在现行区划表里可能已经不存在。

#校验通过就说明这个号码是真的吗?

不能。校验位只保证前 17 位与末位在数学上配套,任何人都可以按规则构造出一个校验通过但不对应任何真人的号码。校验的作用是把「抄错一位」「录入时漏字符」这类问题挡在前面,身份真伪要靠权威渠道核验。

#用在线工具查身份证号安全吗?

取决于工具在哪一端计算。在浏览器本地解析、不发请求的工具,号码只停留在你的设备上;而需要把号码提交给服务器的工具,等于把敏感信息交给第三方,风险高得多。使用前可以打开浏览器开发者工具的网络面板,确认没有相关请求发出。

#批量整理一份含身份证号的表格时,第一步该做什么?

第一步是先脱敏,不是先校验。用正则批量匹配 18 位数字串,把中间部分替换成掩码,确认外发或入库的副本里已经没有完整号码,再对副本做格式校验与去重。顺序反了,完整号码就已经流经了工具与日志。

本文提到的工具

相关文章