记一次二代身份证校验过程

代码狂魔 2021-03-09 10:17:01 ⋅ 916 阅读
原文:https://www.toutiao.com/i6931927852434670088/
记一次二代身份证校验过程

 

如上如所示,中国居民身份证号码编码规则如下:

第1-2位表示省(自治区、直辖市、特别行政区)。
第3-4位表示市(地级市、自治州、盟及国家直辖市所属市辖区和县的汇总码)。其中,01-20,51-70表示省直辖市;21-50表示地区(自治州、盟)。
第5-6位表示县(市辖区、县级市、旗)。01-18表示市辖区或地区(自治州、盟)辖县级市;21-80表示县(旗);81-99表示省直辖县级市。
第7-14位表示出生年月日(单数字月日左侧用0补齐)。其中年份用四位数字表示,年、月、日之间不用分隔符。例如:1981年05月11日就用19810511表示。
第15-17位表示顺序码。对同地区、同年、月、日出生的人员编定的顺序号。其中第十七位奇数分给男性,偶数分给女性。
第18位表示校验码。作为尾号的校验码,是由号码编制单位按统一的公式计算出来的,校验码如果出现数字10.

其中省份取值:

11:北京,12:天津,13:河北,14:山西,15:内蒙古,21:辽宁,22:吉林,23:黑龙江,31:上海,32:江苏,33:浙江,34:安徽,
 35:福建,36:江西,37:山东,41:河南,42:湖北,43:湖南,44:广东,45:广西,46:海南,50:重庆,51:四川,52:贵州,
 53:云南,54:西藏,61:陕西,62:甘肃,63:青海,64:宁夏,65:新疆,71:台湾,81:香港,82:澳门,83:台湾,91:国外

其中第18位的校验规则如下:

  1. 将身份证号码前面的17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。
  2. 将这17位数字和系数相乘的结果相加。
  3. 用加出来和除以11,取余数。
  4. 余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。其分别对应的最后一位身份证的号码为1-0-X-9-8-7-6-5-4-3-2。
  5. 通过上面计算得知如果余数是3,第18位的校验码就是9。如果余数是2那么对应的校验码就是X,X实际是罗马数字10。

通过校验码校验可以验证身份证的合法性。

验证效果:

记一次二代身份证校验过程

 

另外推荐一个在线验证身份证信息的网址:

http://www.ip33.com/shenfenzheng.html


全部评论: 0

    我有话说:

    分享:深夜优化亿级数据分页的奇妙经历

    了起来,看是我们的一个开发同学,顿时紧张了起来...

    Nginx架构详解():nginx反向代理配置

    上次文章中我们已经安装了Nginx,这就写下如何配置反向代理。

    「转载」喜马拉雅自研网关架构演进过程

    背景 网关是一个比较成熟的产品,基本上各大互联网公司都会有网关这个中间件,来解决一些公有业务的上浮,而且能快速的更新迭,如果没有网关,要更新个公有特性,就要推动所有业务方都更新和发布,那是效率极

    WebSocket的了解,附GitHub地址

    初次接触 WebSocket 的人,都会问同样的问题:我们已经有了 HTTP 协议,为什么还需要另一个协议?它能带来什么好处?

    挖那些让公司网站瘫痪的SQL“终结者”

    条慢查询会造成什么后果?之前我一直觉得不就是返回数据会慢一些么,用户体验变差? 其实远远不止,我经历过几线上事故,有就是由条 SQL 慢查询导致的。 那条 SQL 查询耗时达到 2

    iOS直播---主要的概念()

    直播可谓风生水起, 热火朝天, 借此也对音视频进行深入学习, 希望有需要的大家一块学习.第一步对直播的大

    从你在浏览器输入url到发起http请求,这过程到底发生了什么?

    当你在浏览器输入url到发起http请求,这过程到底发生了什么?

    详细讲解一下Hadoop3.2 集群新版本的搭建过程

    详细讲解一下Hadoop3.2 集群新版本的搭建过程

    Kafka系列

      分区 Kafka 的消息组织方 式实际上是三级结构:主题 - 分区 - 消息 问题:为什么 Kafka 要做这样的设计?为什么使用分区的概念而不是直接使用多个主题呢? 分区的

    【分享】单体架构改造成微服务架构的拆分实践

    从5个方面设计这次微服务的拆分方案,以及经验总结!

    【SpringCloud实战】开发中使用Feign添加动态Header问题思考

    踩了一个Spring Cloud Feign添加自定义Header的坑,分享给大家

    消息队列常见问题():消息队列产生大量的消息堆积怎么解决?

    节列举了生产上消息队列产生大量的消息堆积会有哪些后果,那相对应的解决方法有哪些呢?1、消息被丢弃情况如果要实现防止消息过期问题,最好不要设置过期时间!那设置了过期时间导致消息丢失怎么补救呢?答案

    单点登录原理与简单实现

    、单系统登录机制 1、http无状态协议   web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每请求,服务器会独立处理,不与之前或之后的请求

    MySql实战篇:写一个简单的存储过程,完成订单定时任务

    前言之前我们分享了MySql的性能优化、索引详解等内容,本篇文章主要是针对想要入门MySql存储过程的读者,主要实现的业务是订单库里面的超过30分钟没有支付的订单全部置为失效订单......

    阿里技术:聊聊从单机至亿级流量大型网站系统架构的演进过程

    网站的初期,我们经常会在单机上跑我们所有的程序和软件。此时我们使用一个容器,如tomcat、jetty、jboos,然后直接使用JSP/servlet技术......

    GitHub竟然有基于SpringCloud的“网约车”项目,附源码

    有人问小编有没有开源的“网约车”项目源码,并且最好是采用微服务架构设计,这样可以投入技术团队进行开发。 小编在GitHub上还真找到了这个项目,接下来一起看看吧! 项目介绍 该项目是款标准且

    Node&RabbitMQ系列 延迟|死信队列

      前提 目前项目中采用ts+eggjs结合的方式,针对定时任务,采用schedule,随着业务的增多,觉得缺点啥,可能就是缺消息队列吧。上篇文章,针对rabbitmq的基本语法进行了

    RPC调用与GC垃圾回收

    多个服务协同完成业务时,由于业务约束(如红包不符合使用条件、账户余额不足等)、系统故障(如网络或系统超时或中断、数据库约束不满足等),都可能造成服务处理过程在任何步无法继续,使数据处于不一致的