身份证编号算法的兑现

18位身份证标准在国家质料技术监督局于1999年3月1日履行的gb11643-1999《公民身份号码》中做了醒目标确定。gb11643-1999《公民身份号码》为gb11643-1989《社会保障号码》的修订版,其中提议将原标准名称”社会保障号码”更名为”公民身份号码”,其它gb11643-1999《公民身份号码》从履行之日起取代gb11643-1989。

gb11643-1999《公民身份号码》首要内容如下:

一、范围

该标准规定了公民身份号码的编码对象、号码的结构和表现形式,使各种编码对象得到一个唯一的、不变的官方号码。
二、编码对象

人民身份号码的编码对象是怀有中华人民共和国国籍的国民。
三、号码的结构和表示格局

1、号码的构造
人民身份号码是特色组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。

2、地址码
意味着编码对象常住户口所在县(市、旗、区)的行政区划代码,按gb/t2260的确定履行。

3、出生日期码
代表编码对象出生的年、月、日,按gb/t7408的确定履行,年、月、日代码之间不用分隔符。

4、顺序码
意味着在同等地址码所标识的区域范围内,对同龄、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。

5、校验码
(1)十七位数字本体码加权求和公式

s = sum(ai * wi), i =
0, … , 16 ,先对前17位数字的权求和
ai:表示第i职位上的身份证编号数字值

wi:表示第i岗位上的加权因子

wi: 7 9 10 5 8 4 2 1 6
3 7 9 10 5 8 4 2
(2)计算模
y = mod(s, 11)

(3)通过模得到相应的校验码

y: 0 1 2 3 4 5 6 7 8 9
10
校验码: 1 0 x 9 8 7 6
5 4 3 2

四、举例如下:

延冈市朝阳区:
11010519491231002x
黑龙江省汕尾市:
440524188001010014

必发娱乐最新官方网址,15位的身份证编码首先把出生年扩充为4位,简单的就是扩张一个19

<?php
    $a="440524188001010014";
    $b=array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);
    $sum=0;

    foreach($b as $k=>$v){
        $sum += $v*$a[$k];
    }
    echo $sum%11;

 

 

五、说明

1.主次可以按照已有些17位数字本体码,获取相应的验证码。
2.该程序可以去除验证码不正确的身份证编号。
3.15位的身份证出生年份选择年份后2位,没有最后1位校验码。
4.一体化的身份证18位,最后一位校验位可能是非数字。我们的一个类型,数据库保存前17位数字,这样对应部分SQL语句(比如inner
join)有加速功效的!!!

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注