8位身份证标准在国家质量技术监督局于1999年7月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位升18的方法
根据〖中华人民共和国国家标准 GB 11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码。生日期码表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。顺序码表示同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。顺序码的奇数分给男性,偶数分给女性。校验码是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。下面举例说明该计算方法。
15位的身份证编码首先把出生年扩展为4位,简单的就是增加一个19,但是这对于1900年出生的人不使用(这样的寿星不多了)
某男性公民身份号码本体码为34052419800101001,首先按照公式⑴计算:
∑(ai×Wi)(mod 11)……………………………………(1)
公式(1)中:
i----表示号码字符从由至左包括校验码在内的位置序号;
ai----表示第i位置上的号码字符值;
Wi----示第i位置上的加权因子,其数值依据公式Wi=2(n-1)(mod 11)计算得出。
i 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
ai 3 4 0 5 2 4 1 9 8 0 0 1 0 1 0 0 1 a1
Wi 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1
ai×Wi 21 36 0 25 16 16 2 9 48 0 0 9 0 5 0 0 2 a1
根据公式(1)进行计算:
∑(ai×Wi) =(21+36+0+25+16+16+2+9+48++0+0+9+0+5+0+0+2) = 189
189 ÷ 11 = 17 + 2/11
∑(ai×Wi)(mod 11) = 2
然后根据计算的结果,从下面的表中查出相应的校验码,其中X表示计算结果为10:
∑(ai×WI)(mod 11) 0 1 2 3 4 5 6 7 8 9 10
校验码字符值ai 1 0 X 9 8 7 6 5 4 3 2
根据上表,查出计算结果为2的校验码为所以该人员的公民身份号码应该为 34052419800101001X。
C#代码:
private string per15To18(string perIDSrc)
{
int iS = 0;
//加权因子常数
int[] iW=new int[]{7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
//校验码常数
string LastCode="10X98765432";
//新身份证号
string perIDNew;
perIDNew=perIDSrc.Substring(0,6);
//填在第6位及第7位上填上‘1’,‘9’两个数字
perIDNew += "19";
perIDNew += perIDSrc.Substring(6,9);
//进行加权求和
for( int i=0; i<17; i++)
{
iS += int.Parse(perIDNew.Substring(i,1)) * iW[i];
}
//取模运算,得到模值
int iY = iS%11;
//从LastCode中取得以模为索引号的值,加到身份证的最后一位,即为新身份证号。
perIDNew += LastCode.Substring(iY,1);
return perIDNew;
}
kudy21
- 粉丝: 11
- 资源: 4
最新资源
- 基于单片机智能电子密码锁设计(proteus仿真+程序) (1)输入密码:通过4*4矩阵键盘输入6位密码; (2)修改密码:可以对初始密码进行修改; (3)显示电路:使用LCD1602显示密码锁运行状
- 微电网分层控制中二次控制,集中控制,分布式协调控制,事件触发,运行效果良好
- 三菱Q系列L系列程序 三菱L程序,主站L02PLC QX42.QY42P等输入输出模块.L系列定位控制模块 3C-FPC组装机 三菱JE系列伺服控制,绝对定位,X,Y,Z,R模组取
- MATLAB代码:计及碳捕集电厂灵活运行方式及需求响应的综合能源系统日前调度模型 仿真平台:MATLAB yalmip+cplex 包含新能源消纳、热电联产、电锅炉、储能电池、天然气、碳捕集CCS、计
- 新能源汽车车载双向OBC,PFC,LLC,V2G 双向 充电 新能源汽车车载双向OBC,PFC,LLC,V2G 双向 充电桩 电动汽车 车载充电机 充放电机 MATLAB仿真模型 (1)基于V2G技术
- 潮流追踪法,采用牛拉法计算任意拓扑结构系统网损,支路功率,考虑分布式电源接入情况,采用潮流追踪法计算负荷和分布式电源进行网损分摊
- 三相PWM整流器仿真模型 包括基于开关表的直接功率控制,滞环电流控制,有限集模型预测直接功率控制,有限集模型预测电流控制,均为输入三相对称交流电,220V 50Hz,直流侧输出760V,且直流输出电压
- 17 16届智能车十六届国二代码源程序,基础四轮摄像头循迹识别判断 逐飞tc264龙邱tc264都有 能过十字直角三岔路环岛元素均能识别,功能全部能实现 打包出的龙邱逐飞都有,代码移植行好,有基础的
- 西门子1500PLC程序 BMS系统 医药洁净室程序 串级PID 温度误差正负0.2(控温湿度强烈推荐) 程序有详细注释,很方便能看懂; 在运行医药厂房BMS PLC程序; 串级PID,分程调节,控
- 西门子224 XP程序源码,包括pcb,原理图 ,bom PLC 224 全套生产量产方案 非常具有参考价值
- matlab 图像分割gui可视化代码 ,代码功能有 图像灰度化,显示灰度直方图,阈值分割法,区域分割法,梯度边缘分割法,canny边缘分割,拉普拉斯边缘分割,并且可以进行各个方法的比较
- 电动汽车备用能力分析 对电动汽车备用能力的评估需置于合理的、计及用户响应意愿的市场机制下来考察 首先设计出兼顾系统调控需求与用户出行需求的充(放)电合约机制,提出了EV短时备用能力计算方法和响应电价
- Agv伺服驱动器方案开发,本人在AGV行业三年,有丰富的行业经验
- Comsol金属开口环倍频SHG转效率计算
- (断开git服务器合并本地两个分支代码)Git操作技巧:本地合并两个分支代码详细步骤与冲突解决方法
- 交错并联Boost PFC仿真电路模型,控制方法采用输出电压外环,电感电流内环的双闭环PI控制方式 控制效果:交流侧输入电流畸变小,波形良好,输出直流电压可完好跟随给定,两相电感电流均流很好,如展示
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
- 3
前往页