身份证编码与校验码计算规则
身份证编码规则
根据《中华人民共和国国家标准GB11643-1999》(参考,可能有更新的)中有关公民身份号码的规定,公民身份号码是特征组合码,号码共18位,由17位数字本体码和1位数字校验码组成。
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
编码类别 | 编码位数 | 位次 | 描述 | 细分位次 | 细分描述 |
地址码 | 6 | 1-6 | 表示编码对象第一次申领居民身份证时的常住户口所在县(市、旗、区)的行政区划代码。(所有区域的编码可以到网站查询到最新的县及县以上的行政编码资料) | 1-2 | 省份代码 |
3-4 | 城市代码 | ||||
5-6 | 区县代码 | ||||
出生日期码 | 8 | 7-14 | 出生年月日 | ||
顺序码 | 3 | 15-17 | 对同一地址辖区内同年同月同日生的人群中进行排序的顺序码,县、区级政府所辖派出所的分配码,每个派出所分配码为10个连续号码,例如“000-009”或“060-069”。最后一位(第17位)表示性别,单数为男性分配码,双数为女性分配码,如遇同年同月同日有两人以上时顺延第二、第三、第四、第五个分配码。 | ||
校验码 | 1 | 18 | 校验码(身份证最后一位)是根据前面十七位数字码,按照ISO7064:1983.MOD11-2校验码计算出来的检验码。 除了10个阿拉伯数字0-9,还有X,X是罗马数字的10,因此用X来代替数字10 |
校验码计算规则
校验码是识别一个身份证号码是否真实存在的重要的依据。在某种情况下,我们可以通过校验码来判断一个身份证号码的真伪。
身份证号的前17位,每一位 i 都有一个对应的系数bi,系数表如下:
i | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
ai | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
bi | 7 | 9 | 10 | 5 | 8 | 4 | 2 | 1 | 6 | 3 | 7 | 9 | 10 | 5 | 8 | 4 | 2 |
(1)每一位 i 中的数值ai与其对应的系数bi相乘求和得到数值sum:
(1)sum除以11得到余数,余数的结果区间是[0,10],共11种可能,用 12 减去余数得到m,m的结果区间是[2,12],若m在 2~10 之间,则该结果即为校验码(10 用罗马数字 X 表示);若m为 11~12,则再减去 11,公式如下:
注意c=10时,用X代替。
实例验证身份证号码 432831196411150810:
校验码是0,此身份证号码最后一位是0,所以这是一个有效的身份证号码。
身份证编码与校验码计算规则相关推荐
- C语言——实验一:查验身份证(身份证号码的校验码)
前言 为什么我这个萌新要来写这篇文章?事情还要从上周三说起. 在上周三的程序设计基础课上,我们老师给我们全班同学布置了一项题为<实验一:查验身份证>的实验作业,这也是我第一次接触到实验作业 ...
- bcc校验位怎么算的_数据BCC校验码计算工具
这是数据BCC校验码计算工具下载,获得数据BCC校验码工具,MFC开发,使用方便,输入数据16进制字符串,点击计算生成BCC码.. 软件介绍 数据BCC校验码计算工具,难免会发生错误.为了避免这种错误 ...
- Python编程100例--身份证号码的校验码
身份证号码的校验码 任务描述: 身份证号码是由17位数字本体码和1位数字校验码组成,具有特定含义: 前6位是省市县行政区划分代码:第7-14位为出生年月日:第15-17位为登记流水号,其中第17位为偶 ...
- 获取房屋编码的校验码的java和C#版本
获取房屋编码的校验码java版 //获取房屋编码的校验码private String getC(String str_in){String rbc="";//26位加权因子int ...
- 由13位数字组成的中国标准书号校验码计算实例
由13位数字组成的中国标准书号校验码计算实例 EAN·UCC 前缀 组区号 出版者号 出版序号 校 验 码 1 取ISBN前12位数字 9 7 8 7 5 0 6 4 2 5 9 5 ? 2 取各位数 ...
- C语言CRC校验码计算与校验
循环冗余校验(cyclicredundancy check,CRC)对传输序列进行一次规定的除法操作,将除法操作的余数附加在传输信息的后面.在接收端,也对收到的数据做相同的除法.如果接收端除法得到的结 ...
- 文件完整性校验码计算工具
文件完整性校验码计算工具 工具介绍 支持算法:CRC32,MD2,MD4,MD5,SHA1,SHA256,SHA512,RipeMD128,RIPEMD160,ED2K 多个哈希类型可以同时生成每个文 ...
- QT ModbusCRC16 校验码计算(非查表法,直接计算)
记录一下QT中如何实现 ModbusCRC16 校验码计算 #include <QCoreApplication> #include <QDebug>//CRC16计算函数 u ...
- c语言海明校验码编码,海明校验码的编码规则有哪些?
在海明码中, 位号数(1.2.3.--.n)为2的权值的那些位,即: 1(2^0).2(2^1).4(2^2).8(2^3).-2^(r-1)位,作为奇偶校验位,并记作: P1.P2.P3 .P4.- ...
- Java实现校验身份证号码(校验码位)
一.原理 参考文件:http://c.gb688.cn/bzgk/gb/showGb?type=online&hcno=080D6FBF2BB468F9007657F26D60013E. 实现 ...
最新文章
- AcWing 397. 逃不掉的路(边双连通分量缩点成树 + 树链剖分乱搞)
- 清华大学最新研制的自行车“成精”了!“天机”在全球顶尖期刊“泄露”
- matplotlib显示中文
- 用谷歌搜索技术问题一定比用百度好?也未必...
- 学python最好的方式-自学Python有什么好方法吗?老男孩专业Python培训
- .net core项目启动时报_未处理Socket异常(以一种访问权限不允许的方式做了一个访问套接字的尝试。)...
- Android应用开发之(通过ClipboardManager, ClipData进行复制粘贴)
- s5pv210 linux内核移植,S5PV210(TQ210)学习笔记——内核移植与文件系统构建之二
- eclipse调试java web_eclipse调试web项目
- RFC2616中文版(8)连接
- Perl的模块判断及安装
- trucksim安装教程
- Qt安装与使用(小白专用教程)
- 年底绩效考核期又来临,企业如何挑选一款好用的绩效考核管理系统?
- 课程设计之贪吃蛇小游戏制造
- 基于抛物线过渡(梯形加减速)的空间直线插补算法与空间圆弧插补算法(Matlab)
- 使用jquery easyui datetimebox 设置默认时间
- 内存类型UDIMM、RDIMM、LRDIMM大解析
- Odoo免费开源信息化平台满足所有企业应用场景与需求
- uniapp微信小程序使用自定义字体和外部字体