【商业信息】GB 11643—1999 公民身份号码

     

本标准是GB 11643—1989《社会保障号码》的修订版。为了使标准的内容适应我国国民经济和社会发展的需要,对原标准内容作了以下改动:

  • 原标准名称“社会保障号码”更名为“公民身份号码”。
  • 增加了引用的国际标准。
  • 增加了第3章“定义”。
  • 在号码的结构和表示形式方面,将出生日期由六位数字改为用八位数字表示,其中年份用四位数字表示;取消了顺序码中对百岁老人使用特定编号表示的条文。
  • 地址码改为编码对象常住户口所在县(市、旗、区)的行政区划代码。
  • 给出了校验公式及效验码计算方法。
  • 原标准“附录 A  社会保障号码实例 (参考件)”改为“附录A (提示的附录 )  公民身份号码实例”;增加了“附录 B (提示的附录)  校验码字符值计算方法实例”。

本标准从实施之日起,代替GB 11643—1989。

本标准由国家质量技术监督局提出。

本标准由中国标准化与信息分类编码研究所归口。

本标准主要起草单位:中国标准化与信息分类编码研究所、公安部户政局、公安部计算机管理监察司、公安部科技司。

参加起草单位:国家发展计划委员会、劳动和社会保障部、人事部、卫生部、民政部、国家工商局信息中心、国家税务总局信息中心、中国残疾人联合会、国家统计局人口与就业统计司。

本标准委托中国标准化与信息分类编码研究所和公安部技术监督委员会负责解释。

范围

本标准规定了公民身份号码的编码对象、号码的结构和表示形式,使每个编码对象获得一个唯一的、不变的法定号码。

2  引用标准

下列标准所包含的条文,通过在本标准中引用而构成为本标准的条文。本标准出版时,所示版本均为有效。所有标准都会被修订,使用本标准的各方应探讨使用下列标准最新版本的可能性。

GB/T 2260­—1995       中华人民共和国行政区划代码

GB/T 7408—1994        数据元和交换格式  信息交换  日期和时间表示法

ISO 7064:1983数据处理——校验码系统

注:ISO 7064:1983的译文由中国标准化与信息分类编码研究所提供。

3  定义

本标准采用下列定义

3.1  本体码  master number

表示编码对象一定特征的号码。

3.2  校验码  check number

附加在本体码后边,用来验证本体码的录入或转录过程准确性的号码。每一个本体码只有一个校验码,校验码通过规定的数学关系式得到。

4  编码对象

公民身份号码的编码对象是具有中华人民共和国国籍的公民。

5  号码的结构和表示形式

5.1  号码的结构

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

5.1.1   地址码

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

5.1.2   出生日期码

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

例:某人出生日期为19661026日,其出生日期码为19661026

5.1.3 顺序码

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

5.1.4  校验码

校验码采用ISO 7064:1983,MOD 11-2 校验码系统。

5.1.4.1  校验公式

公民身份号码中各个位置上的号码字符值应满足下列公式的校验:

\sum_{i=1}^{18}(a_{i}\times W_i)\equiv 1(mod\11) \dots \dots \dots \dots \dots \dots \dots \dots \dots \dots \left ( 1 \right ) 

式中:i——表示号码字符从右至左包括校验码字符在内的位置序号;
        a_i  ——表示第i位置上的号码字符值;
          W_i——表示第i位置上的加权因子,其数值依据公式W_i=2^{(i-1)}(mod\11)计算得出。表1列出公民                   
身份号码中各个位置上的加权因子W_i数值。

                                             表 1 公民身份号码中各个位置上的加权因子W_i数值

i

18

17

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

W_i

7

9

10

5

8

4

2

1

6

3

7

9

10

5

8

4

2

1

5.1.4.2  校验码字符值的计算
i=1时,W_1=2^0=1,公式(1)可表示成:

a_1+\sum_{i=2}^{18}(a_i\times W_i)\equiv 1(mod\11) \dots \dots \dots \dots \dots \dots \dots \dots \dots \dots (2)

公式(2)中,a_1即为校验码字符值,其取值范围是0\leq a_1\leq 10;当a_1值等于10时,用罗马数字符X表示。
满足于公式 (2) 及取值范围要求的校验码字符值a_1可根据a_1\sum_{i=2}^{18}(a_i\times W_i)(mod\11)的换算关系算出,见表2。

                                           表 2 校验码字符值a_1\sum_{i=2}^{18}(a_i\times W_i)(mod\11)的换算关系表

\sum_{i=2}^{18}(a_i\times W_i)(mod\11)012345678910
校验码字符值a_110X98765432

5.2 号码的表示形式

公民身份号码的各特征码依次连接,不留空格,其表示形式为:

附  录  A

(提示的附录)

公民身份号码示例

A1  北京市朝阳区1949年12月31日出生的一名女性公民,其公民身份号码为:

11010519491231002X

该号码表示的具体含义如下:

A2  广东省汕头市潮阳县188011日出生的一男性公民,其公民身份号码为:

440524188001010014

该号码表示的具体含义如下:

附  录  B

(提示的附录)

校验码字符值计算方法实例

B1  某女性公民公民身份号码本体码为11010519491231002,其校验码字符值可按下述步骤与方法计算:

第一步:列出本体码与字符位置序号i相对应的各个位置上的号码字符值a_i

字符位置序号i

18

17

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

本体码字符值a_i

1

1

0

1

0

5

1

9

4

9

1

2

3

1

0

0

2

第二步:由表1列出与字符位置序号i相对应的加权因子值W_i

字符位置序号i

18

17

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

加权因子值W_i

7

9

10

5

8

4

2

1

6

3

7

9

10

5

8

4

2

第三步:计算与字符位置序号i相对应的a_i \times W_i的值。

字符位置序号i

18

17

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

a_i \times W_i

7

9

0

5

0

20

2

9

24

27

7

18

30

5

0

0

4

第四步:计算级数之和
\small \sum_{i=2}^{18}(a_i \times W_i)=7+9+0+5+0+20+2+9+24+27+7+18+30+5+0+0+4=167
第五步:计算\sum_{i=2}^{18}(a_i\times W_i) 以11为模的余数值\sum_{i=2}^{18}(a_i\times W_i)(mod\11)
级数之和167除以模11商15余2,即\sum_{i=2}^{18}(a_i\times W_i)(mod\11)为2。
第六步:求出校验码字符值a_i。查表2当\sum_{i=2}^{18}(a_i\times W_i)(mod\11)为2时,检验码字符值a_i为X。
该女性公民的公民身份号码为11010519491231002X。
B2 某男性公民身份号码本体码为 44052418800101001,其校验码字符值仍可按B1各步骤与方法
计算如下:

字符位置序号i

18

17

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1
本体码字符值a_i

4

4

0

5

2

4

1

8

8

0

0

1

0

1

0

0

1

a_1
加权因子值W_i

7

9

10

5

8

4

2

1

6

3

7

9

10

5

8

4

2

1
a_i \times W_i

28

36

0

25

16

16

2

8

48

0

0

9

0

5

0

0

2

a_1

\small \sum_{i=2}^{18}(a_i \times W_i)=28+36+0+25+16+16+2+8+48+0+0+9+0+5+0+0+2=195
查表2得出校验码字符值a_i为4。
195 \div 11 = 17 \frac{18}{11},即\sum_{i=2}^{18}(a_i\times W_i)(mod\11)为8。
该男性公民的公民身份号码为440524188001010014。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Vue中进行中文姓名和公民身份号码的脱敏可以通过以下方式实现: 1. 中文姓名脱敏: 可以使用Vue的计算属性来处理中文姓名的脱敏。首先,将原始的中文姓名存储在data中的一个变量中,然后创建一个计算属性来返回脱敏后的姓名。在计算属性中,可以使用字符串的截取和替换方法来实现脱敏操作。具体代码如下: ```html <template> <div> <p>原始姓名:{{ originalName }}</p> <p>脱敏姓名:{{ maskedName }}</p> </div> </template> <script> export default { data() { return { originalName: '李**', }; }, computed: { maskedName() { return this.originalName.substr(0, 1) + '*'.repeat(this.originalName.length - 1); }, }, }; </script> ``` 2. 公民身份号码脱敏: 同样地,可以使用Vue的计算属性来处理公民身份号码的脱敏。首先,将原始的身份号码存储在data中的一个变量中,然后创建一个计算属性来返回脱敏后的号码。在计算属性中,可以使用字符串的截取和替换方法来实现脱敏操作。具体代码如下: ```html <template> <div> <p>原始身份号码:{{ originalID }}</p> <p>脱敏身份号码:{{ maskedID }}</p> </div> </template> <script> export default { data() { return { originalID: '32***********62', }; }, computed: { maskedID() { return this.originalID.substr(0, 2) + '*'.repeat(this.originalID.length - 4) + this.originalID.substr(-2); }, }, }; </script> ``` 这样,通过计算属性的方式,可以在Vue中实现中文姓名和公民身份号码的脱敏操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值