周记(身份证号码验证规则)

2015/12/14--2015/12/20

         想在一个游戏网站上注册一个账号,竟然需要我输入身份证,我想玩个游戏而已,还需要实名制?不太想用自己的身份证,就随便写了一串号码去,注册提示号码不合法,我换个好几个试都报不合法,我想着游戏网站不至于能访问我们国家的身份证数据来比较啊,怎么拿是识别出不合法,然后我就去网上查了下,才知道身份证号码的规则。

         这里简单介绍下身份证号码的规则:

结构和形式

  1.号码的结构

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

  2.地址码

  表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。

  3.出生日期码

  表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。

  4.顺序码

  表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。

  5.校验码

  根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。

 

这里主要就是第十八位验证码,关于这个ISO 7064:1983.MOD 11-2校验码计算公式:

                   ∑(ai×Wi)(mod 11)

说明:

(mod 11):表示对11取余

i----表示号码字符从右至左包括校验码在内的位置序号;

ai----表示第i位置上的号码字符值;

Wi----示第i位置上的加权因子,其数值依据公式Wi=2^(i-1)(mod 11)计算得出。

身份证有18位组成

i

18

17

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

Wi

7

9

10

5

8

4

2

1

6

3

7

9

10

5

8

4

2

加密码

∑(ai×Wi)(mod 11)

0

1

2

3

4

5

6

7

8

9

身份证验证码

1

0

X

9

8

7

6

5

4

3

 

假如有身份证号为:12345678912345678Y,最后一位Y未知,则:

ai*wi = 7*1 + 9*2 + 10*3 +。。。+7*4 + 8*2= 416

∑(ai×Wi)(mod 11)  = 9

则Y=3

这样身份证的最后一位验证码就算出来

         最后,我写了一个简单身份证号码生成器,可以随机产生一个身份证号,是基于火狐浏览器的,具体dome源码和文件可在云盘上下载:http://pan.baidu.com/s/1bnKakP5

 dome里面有中国省市区的信息文件(xml),可以供大家做省市区联动参考。

周记(身份证号码验证规则)_第1张图片

你可能感兴趣的:(学习笔记,学习成长-生活记录,身份证验证码,学习成长,ISO,70641983.MOD,11-,省市区联动,省市区xml文件下载)