校验号码合法性,提取出生日期性别
所有计算完全在浏览器本地完成,不会上传身份证号码到任何服务器。地区信息只解析到省级,不解析市/区县,避免因为行政区划数据不完整或者过时给出错误信息。这个工具只是格式和校验码的合规性检查,不能验证这个号码是否真实存在、是否对应一个真实的人。
这个工具检查一个 18 位中国大陆居民身份证号码在格式和校验码上是否自洽,并在通过后读出号码里编码的三项信息:省级地区、出生日期和性别。它依据的是 GB 11643 的校验码算法:把前 17 位分别乘以固定权重后求和,再对 11 取余,查表得到应有的第 18 位,与号码实际的最后一位比较。必须强调它的边界:它只能说明号码「算得对」,不能证明这个号码真实存在、已经被签发,或者属于某个真实的人;它也不支持 15 位的旧版号码,不查询市县级地区,不能用来核实任何人的身份。
下面的号码是为演示而人为构造的,不对应任何真实的人。号码 110101199003071233:前 17 位 11010119900307123 算出的校验码是 3,与最后一位一致,所以通过;前两位 11 对应北京,出生日期显示 1990-03-07,第 17 位是 3(奇数),性别显示男。号码 440306198512310049:校验码应为 9,通过;前两位 44 对应广东,出生日期 1985-12-31,第 17 位是 4(偶数),性别显示女。如果把第一个号码的最后一位改成 4,即 110101199003071234,则提示校验码不匹配,正确的校验码应该是 3,但最后一位是 4。以上结果都是用页面同样的算法实际运行得到的。
18 位号码从左到右依次是:前 6 位地址码(前两位是省级行政区划代码),接着 8 位出生日期码(4 位年、2 位月、2 位日),然后 3 位顺序码(其中第 17 位的奇偶表示性别,奇数为男、偶数为女),最后 1 位是校验码,可能是数字 0 到 9,也可能是罗马数字 X(代表 10)。这个工具只解析前两位的省份、出生日期和第 17 位,不解析第 3 到第 6 位。
不是。校验码算法是公开的,谁都可以按规则构造出一个形式上正确的号码。只有公安机关的身份核验系统才能确认号码是否真实、是否与姓名对应。这个工具适合用在发现输入错误的场景,比如核对自己录入表单的号码有没有少打、多打或错位一位,或者开发时造测试数据。
先检查是否录入错误,尤其是相邻数字调换、0 与 O 混淆、1 与 l 混淆,或者最后一位的 X 被输入成了别的字符。如果你的号码来自很早以前或者特殊情况办理的证件,理论上也可能出现不符合通用算法的情况,这种情况请以公安机关和证件本身为准。工具给出的「应该是 X」可以帮你判断是不是只有最后一位错了。
说明月份不在 1 到 12 之间,或者日期不在 1 到 31 之间。这类号码即使校验码恰好匹配,也不是正常号码。不过反过来,不显示这条提示也不代表日期一定真实存在,因为工具并不检查每月天数。
不能。号码的第 3 到第 6 位确实包含市县信息,但行政区划会调整,而且代码表很庞大。工具选择只解析到省级,避免因为数据不全或过时而给出错误结果。
校验全部在你的浏览器本地完成,页面中的代码只对输入的字符串做算术运算和查表,没有把号码发送到任何服务器,也不保存。刷新页面输入会被清空。身份证号属于敏感个人信息,即使工具不上传,也建议不要在公共电脑上输入真实号码,用完后关闭页面。