Python系列-藏在身份证号码中的秘密

Python系列-你所不知道的身份证号码

一、身份证号码结构解析

众所周知,我国现行身份证号码为18位,前6位为地区编码,中间8位为出生日期,2位派出所编码,1位性别编码,最后一位是校验位。

Python系列-藏在身份证号码中的秘密

具体表达如下:

Python系列-藏在身份证号码中的秘密

(1)第1至2位数字代表所在省(直辖市、自治区)的代码;

(2)权重第3至4位数字代表所在地级市(自治州)的代码;

(3)权重第5至6位数字代表所在区(县、自治县、县级市)的代码;

(4)权重第7-14位数字代表出生年、月、日;

(5)权重第15-16位数字代表所在的派出所代码;

(6)权重第17位数字表示性别,奇数表示男性,偶数表示女性;

(7)权重第18位是校验码,及个人信息码,由前17位数字计算得到。

二、身份证号码是如何校验的?

身份证号码不是随便编制出来的,是有固定的数字编码和一种数字计算出来的校验位组成的。一个一二出生下来后,为什么当地PCS就可以根据出生证明上的数据,就可以在你家户口本上打印出来小孩的身份证号码。小孩的户籍地区编码是固定的,小孩的出生日期是固定的,入户籍的派出所编码是固定的,小孩的性别是确定的,根据前面的17位数字计算一个校验位,从而确定18位身份证号码。

身份证号码每一位的权重如下表所示,每一位的权重都是固定的。

序号

1

2

3

4

5

6

8

9

10

11

12

13

14

15

16

17

权重Wi

7

9

10

5

8

4

1

6

3

7

9

10

5

8

4

2

那怎样计算校验位呢?

Y=(ΣAi*Wi)mod11

计算出来的Y并不是最后的校验数,Y有个对应数,入下表所示:

Y

0

1

2

3

4

5

6

7

8

9

10

校验码

1

0

X

9

8

7

6

5

4

3

2

那如文章开头所示的身份证号码的校验位是如何计算的呢?计算过程如下:

Y=3*7+4*9+0*10+5*5+2*8+4*5+1*2+9*1+8*6+0*3+0*7+1*9+0*10+1*5+0*8+0*4+1*2=189mod11=2

数字2对应的校验码X,则身份证号码的最后一位是X,文章开头的身份证号校验通过。

Python系列-藏在身份证号码中的秘密

三、身份证号码的权重又是如何计算的呢?

欢迎各位,作者还真不知道,欢迎各位网友在评论区留言告诉我。

Python系列-藏在身份证号码中的秘密

展开阅读全文

页面更新:2024-03-28

标签:县级市   权重   户籍   派出所   开头   小孩   性别   秘密   代码   代表   数字   系列

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top