第二代身份证号码编码
来源: 战荫伟/
广东工业大学
1015
4
0
2023-10-24

第二代身份证号码的编码规则

第二代身份证号码共18位,由17位本体码和1位校验码组成。其中,本体码前6位是地址码,表示登记户口时所在地的行政区划代码,依照《中华人民共和国行政区划代码》国家标准(GB/T2260)的规定执行;接下来的8位是出生年月日,采用YYYYMMDD格式;本体码的最后三位是顺序码,表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编订的顺序号,顺序码的奇数分配给男性,偶数分配给女性,即第17位奇数表示男性,偶数表示女性;

第二代身份证号码的第18位是校验码,采用ISO 7064:1983, MOD 11-2校验字符系统。校验码取值为模11的余数,如果为10,则用X代替,因此可用一个字符表示。

第一代身份证和第二代身份证的区别在于:

1. 第一代身份证是15位,而第二代身份证是18位;

2. 第一代身份证出生年月日采用YYMMDD格式,而第二代身份证出生年月日采用YYYYMMDD格式;

3. 第一代身份证没有校验码。 

校验码计算规则

设身份证号码为一字符串 A=[a0, ..., a17],  对应地,定义权重W=[w0, ..., w17] ,wi = 218-i mod 11,则校验公式为:

c = A W mod 11

如果 c = 1, 则校验正确,该身份证号合理。

Python程序

# 输入身份证字符串A

def IDChecker(A):
... # 判断A的位数是否为18
... if len(A) != 18:
... ... return False
    if A[17]  == 'X' or A[17]  == 'x' :
... ... s = 10

else 

... ... s = int(A[17] )

... w = 2

... for i in range(len(A)-2,0,-1):
... ... s += int(p[i) * (w%11)

... ... w *= 2
... return s%11 == 1
.


登录用户可以查看和发表评论, 请前往  登录 或  注册
SCHOLAT.com 学者网
免责声明 | 关于我们 | 联系我们
联系我们: