身份证号校验

按国家标准检查十八位身份证号的格式、出生日期和校验码,并解析出地区、年龄和性别。

身份证号校验

校验规则依据 GB 11643,检查长度、地区码、出生日期和末位校验码。本地处理不上传。

校验码是怎么算出来的

十八位身份证号的前十七位按固定权重加权求和,权重依次是 7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2,求和结果对 11 取余,余数对应到校验码表 1、0、X、9、8、7、6、5、4、3、2。这一步能发现绝大多数录入错误,包括单个数字写错和相邻两位写反。

但校验码通过不等于号码真实存在。校验码只保证格式自洽,号码是否属于某个真实的人,只能由公安人口信息库确认,任何前端工具都做不到这一点。

号码里的三段信息

前六位是行政区划代码,反映首次登记时的户籍地;中间八位是出生日期,格式为年月日;最后四位中,前三位是顺序码,其中第三位奇数为男、偶数为女,末位是校验码。

需要注意行政区划代码会随区划调整而变化,早年登记的号码可能对应现在已经合并或撤销的区划,所以用最新的区划表去核对历史号码时,可能出现对不上的情况,这属于正常现象。

业务系统里的校验层次

只做格式校验远远不够。完整的校验应包括:长度与字符集、地区码有效性、出生日期真实性(不能是未来日期、不能超出合理年龄范围)、校验码计算、以及与姓名的一致性核验。前三项本地能做,后两项需要官方数据源。

常见校验失败原因

提示原因处理建议
长度不符不足 18 位,或含空格、分隔符先清理非数字字符再校验
地区码无效前六位不在现行行政区划表中核对是否为历史区划或录入错误
出生日期无效月份超过 12、日期超过当月天数按实际日历校验,注意闰年二月
校验码不符某一位数字录错或顺序颠倒请用户核对原件重新输入
末位 x 小写录入时用了小写字母统一转为大写后再校验

常见问题

校验通过能证明身份证是真的吗?▼
不能。校验码只保证号码内部自洽,任何人按规则都能构造出通过校验的号码。真实性核验必须对接官方数据源,做姓名与号码的一致性比对。
为什么有的身份证号前六位查不到对应地区?▼
行政区划会调整,撤县设区、合并乡镇都会导致代码变更。早年登记的号码可能对应已经调整的区划,用现行代码表核对就对不上,这属于正常情况。
15 位身份证号怎么处理?▼
十五位是早期格式,没有校验码,出生年份只有两位。现在办理业务普遍要求十八位,十五位号码需要按规则升位:插入世纪位并在末位补校验码。升位规则涉及世纪判断,建议以发证机关确认为准。
末位 X 输入小写会影响校验吗?▼
本工具会自动转成大写再校验。但业务系统入库时如果没做统一处理,可能因为大小写不一致导致同一个人出现两条记录,建议在入库前统一转大写。
批量校验有数量限制吗?▼
一次最多显示 20 条结果。数量更多时建议用脚本处理,浏览器端逐条计算虽然快,但结果展示会很长。