15位和18位身份证号码的结构介绍
来源:互联网 发布:网络调教女m的任务详细 编辑:程序博客网 时间:2024/05/16 09:05
身份证号码编码方法
要进行身份证号码的验证,首先要了解身份证号码的编码规则。我国身份证号码多由若干位数字或者数字与字母混合组成。早期身份证由15位数字构成,这主要是在1980年以前发放的身份证,后来考虑到千年虫问题,因为15位的身份证号码只能为1900年1月1日到1999年12月31日出生的人编号,所以又增加了18位身份证号码编号规则。
15位身份证号码编码较为简单,从左到右其15位码依次为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
A A A A A A Y Y M M D D N N S
前六位AAAAAA是身份证编码对象的所在地(出生地)的编码,该号码可由国家统计局公布的相关标准中得到。YY表示出生年的后两位,MM和DD表示出生月和日,不足两位的高位补0,NNS为顺序号,无法确定。S为性别识别码,男性为奇数,女性为偶数。例如,一位于1965年2月16日出生在湖北省巴东县的女性的15位身份证号码为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
A A A A A A Y Y M M D D N N S
4 2 2 8 2 3 6 5 0 2 1 6 0 2 2
18位身份证号码比15位身份证号码多出的3位中的两位用来补充2位的年份为4位,另外1位作为校验码存在。一项由国家质量技术监督局发布的标准对身份证号码的编码规则做了具体的规定。该标准为名《公民身份号码》,编号GB11643-1999,为国家强制标准。它代替了1989年公布的名为《社会保障号码》GB11643-1989国家强制标准,从1999年7月1日开始强制实施。该标准的内容介绍如下。
1.标准适用范围:规定了公民身份号码的编码对象、号码的具体结构组成和表现形式,并规定每个编码对象将获得一个唯一的、终身不变的号码。
2.编码对象:具有中国人民共和国国籍的公民。
3.号码的结构组成和表现形式。
该标准中对号码的构造组成和表现形式进行了如下的阐述:
号码由17位本体码和1位校验码组成,这18位号码从左到右依次为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
A A A A A A Y Y Y Y M M D D N N S C
前六位AAAAAA同样是地区编码,按照国家推荐标准GB/T2260的规定进行编码。YYYY是扩充后的四位出生年码,MM和DD为出生月和日码,不足两位的仍然在高位补0。NNS为无法确定的顺序码,其中S为性别识别码,同样将奇数分配给男性,偶数分配给女性。第18位校验位是对前17位进行如下的计算得到的。
使用数组B[I]表示从左到右第I个数字,W[I]表示第I位上的加权因子,需要注意的是,为了方便讲述,这里的数组第一个是B[1]而不是计算机中的B[0],W[I]也是同样。加权因子依次为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
得到第18位的值C首先要利用这个加权因子计算出 的值, 的计算公式为:
即,将前17位的数字与其对应的加权因子相乘,再将积相加,最后的和再除以11,取其余。除以11最后的余有11种可能,从0到10。通过余再做一个转换,即可得到相应的第18位上的校验码,余数和校验码的转换如下:
余数 0 1 2 3 4 5 6 7 8 9 10
对应的校验码 1 0 X 9 8 7 6 5 4 3 2
下面我们来计算一下一位湖北省襄樊市襄城区在1986年11月9日出生的男性的18位身份证号码,其顺序号假定为321(男性为奇数)。该身份证号前17位为:
4 2 0 6 8 2 1 9 8 6 1 1 0 9 3 2 1
先计算前17位与加权因子的积的和除以11的余:
余数为1则其对应的第18位校验码为0,该男性的18位身份证号码为:
4 2 0 6 8 2 1 9 8 6 1 1 0 9 3 2 1 0
@IOS荣天
校验码可以作为一种判断一个正确的身份证号的前17位是否有错误发生的标准,但这并不一定在任何情况下都是有效的,在某些情况下的错误也是这个校验位无法检测的,比如,多个数字发生错误,例如,当上例中的身份证号码由42068219861109321变为42098219861106321后,其校验码仍为0。
举报 222.69.137.* 2009
要进行身份证号码的验证,首先要了解身份证号码的编码规则。我国身份证号码多由若干位数字或者数字与字母混合组成。早期身份证由15位数字构成,这主要是在1980年以前发放的身份证,后来考虑到千年虫问题,因为15位的身份证号码只能为1900年1月1日到1999年12月31日出生的人编号,所以又增加了18位身份证号码编号规则。
15位身份证号码编码较为简单,从左到右其15位码依次为:
1
A
前六位AAAAAA是身份证编码对象的所在地(出生地)的编码,该号码可由国家统计局公布的相关标准中得到。YY表示出生年的后两位,MM和DD表示出生月和日,不足两位的高位补0,NNS为顺序号,无法确定。S为性别识别码,男性为奇数,女性为偶数。例如,一位于1965年2月16日出生在湖北省巴东县的女性的15位身份证号码为:
1
A
4
18位身份证号码比15位身份证号码多出的3位中的两位用来补充2位的年份为4位,另外1位作为校验码存在。一项由国家质量技术监督局发布的标准对身份证号码的编码规则做了具体的规定。该标准为名《公民身份号码》,编号GB11643-1999,为国家强制标准。它代替了1989年公布的名为《社会保障号码》GB11643-1989国家强制标准,从1999年7月1日开始强制实施。该标准的内容介绍如下。
1.标准适用范围:规定了公民身份号码的编码对象、号码的具体结构组成和表现形式,并规定每个编码对象将获得一个唯一的、终身不变的号码。
2.编码对象:具有中国人民共和国国籍的公民。
3.号码的结构组成和表现形式。
该标准中对号码的构造组成和表现形式进行了如下的阐述:
号码由17位本体码和1位校验码组成,这18位号码从左到右依次为:
1
A
前六位AAAAAA同样是地区编码,按照国家推荐标准GB/T2260的规定进行编码。YYYY是扩充后的四位出生年码,MM和DD为出生月和日码,不足两位的仍然在高位补0。NNS为无法确定的顺序码,其中S为性别识别码,同样将奇数分配给男性,偶数分配给女性。第18位校验位是对前17位进行如下的计算得到的。
使用数组B[I]表示从左到右第I个数字,W[I]表示第I位上的加权因子,需要注意的是,为了方便讲述,这里的数组第一个是B[1]而不是计算机中的B[0],W[I]也是同样。加权因子依次为:
1
7
得到第18位的值C首先要利用这个加权因子计算出 的值, 的计算公式为:
即,将前17位的数字与其对应的加权因子相乘,再将积相加,最后的和再除以11,取其余。除以11最后的余有11种可能,从0到10。通过余再做一个转换,即可得到相应的第18位上的校验码,余数和校验码的转换如下:
余数
对应的校验码
下面我们来计算一下一位湖北省襄樊市襄城区在1986年11月9日出生的男性的18位身份证号码,其顺序号假定为321(男性为奇数)。该身份证号前17位为:
4
先计算前17位与加权因子的积的和除以11的余:
余数为1则其对应的第18位校验码为0,该男性的18位身份证号码为:
4
@IOS荣天
校验码可以作为一种判断一个正确的身份证号的前17位是否有错误发生的标准,但这并不一定在任何情况下都是有效的,在某些情况下的错误也是这个校验位无法检测的,比如,多个数字发生错误,例如,当上例中的身份证号码由42068219861109321变为42098219861106321后,其校验码仍为0。
举报 222.69.137.* 2009
- 15位和18位身份证号码的结构介绍
- 产生所有的18位和15位的身份证号码
- JS校验身份证号码(15位和18位)
- JS校验身份证号码(15位和18位)
- 身份证号码的验证及15位升18位算法
- 身份证号码15位到18位的转换
- Javascript实现身份证号码15位转18位的算法
- js中15位及18位身份证号码的校验
- 关于18位身份证号码的结构与验证
- js身份证号码的校验,支持15位身份证号和18位身份证号
- 18位身份证号码的校验
- 身份证号码15位升18位(C#)
- 身份证号码15位升18位(C#)
- 身份证号码15位升18位(C#)
- 身份证号码15位升18位(C#)
- 15位身份证号码转18位
- 身份证号码15位升18位(C#)
- 身份证号码15位升18位(C#)
- objective-c 截取字符串 数组 字典…
- 利用rman进行异机还原(目录不同)
- objective-c 一些联系
- objective-c 一些作业
- objective-c 获取时间的方法
- 15位和18位身份证号码的结构介绍
- objective-c 根据身份证 计算出年…
- objective-c 如果使用了release …
- iOS上一种图书翻页效果的实现(Lea…
- objective-c中import与@class的说…
- ios BOKE
- Objective c 分数之间的加减乘除 …
- Objective c KVO/KVC做了简单的…
- Objective-c类别