第二代身份证号码编码-z6尊龙旗舰厅

z6尊龙旗舰厅
第二代身份证号码编码
来源: 战荫伟/
广东工业大学
495
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,则校验公式为:

wi=2i1(mod11)">c = a w mod 11

wi=2i1(mod11)">如果 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)

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


登录用户可以查看和发表评论, 请前往  登录 或  注册
scholat.com 学者网
免责声明 | 关于z6尊龙旗舰厅 | 联系z6尊龙旗舰厅
联系z6尊龙旗舰厅:
网站地图