大家每个人都有身份证,但是认真研究过自己那18位居民身份证号码的人可能真的不多,今天就跟大家简单聊一下身份证号码的构成形式及最后一位验证码的验证办法。
最开始呐先向大家介绍一下身份证号码的生成规则,特意找了一个最官方的文档,以下内容摘选于国家质量技术监督局编制的GB11643-1999《公民身份号码》
那么根据官方公布的以上五项标准,我们就可以自行提炼出一个居民身份证号码必须满足的一些条件了:
1. 长度为18位
2. 前六位地址码为我国已有的行政规划代码
3. 出生日期在合理范围内,例如:不会出现当年之后的年份,不会出现大于12的月份,不会出现大于31的日期
4. 顺序码最后一位为奇数持有人为男性,为偶数则持有人为女性
5. 最后一位验证码与算法结果一致
看不懂?没关系,简单翻译并且加工一下就是:
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-10这11个数字,分别对应的身份证最后一位校验码为1,0,X,9,8,7,6,5,4,3,2(这个X其实是罗马数字的10)
根据以上我们提炼的规则我们就可以利用一些算法工具在一些简单的层面上去验证一个身份证号码的真假了,用EXCEL、SAS、R、SQL、PYTHON都是可以的,下面我用PYTHON来示范一下,最终效果如下:
最后不废话放出代码:
上面那段代码中其实并没有把上面那五个条件都列入,感兴趣的话可以看一下是哪些条件没有列入,全部都找的对的话,这篇文章的打赏五五分...
本文来自企鹅号 - 全球大搜罗媒体
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文来自企鹅号 - 全球大搜罗媒体
如有侵权,请联系 cloudcommunity@tencent.com 删除。