18位身份证号码最后一位校验码的计算方法
介绍18位身份证号码最后一位校验码的计算方法
公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
校验方法:
(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
下面是C程序代码:
// char szSrc1[]="11010519491231002X";
// DoVerify(szSrc1);
// char szSrc2[]="440524188001010014";
// DoVerify(szSrc2);
char DoVerify(const char* pszSrc)
{
int iS = 0;
int iW[]={7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
static char szVerCode[]="10X98765432";
int i;
for(i=0;i<17;i++)
{
iS += (int)(pszSrc[i]-'0') * iW[i];
}
int iY = iS%11;
// printf("%d %% 11 = iY = %d/n",iS, iY);
// printf("%c /n",szVerCode[iY]);
return szVerCode[iY];
}
18位身份证号码最后一位校验码的计算方法相关推荐
- 关于18位身份证号码最后一位计算(Java实现)
关于18位身份证号码最后一位计算(Java实现) 现代的身份证号码长度都是18位的,但是只要知道前17位便可推出第18位数字或者字母(第18位为0,1,...,9和X中的一个).也就是说,国内不存在前 ...
- 18位身份证号码最后一位校验
1 package com.jdk7.chapter5; 2 3 /** 4 * 仅能校验15位或18位身份证号的校验码 5 * @author Administrator 6 * 7 */ 8 pu ...
- Oracle 通过15位或18位身份证号码计算年龄、出生年月日、性别
15位身份证号码各位的含义: 地址码(前六位数):表示身份证编码对象常住户口所在省份.地市,以及县(市.旗.区)的行政区划代码,1-2位数字表示所在地省.自治区.直辖市代码,第3.4位数字表示所在地地 ...
- 15位和18位身份证号码的结构介绍
身份证号码编码方法 要进行身份证号码的验证,首先要了解身份证号码的编码规则.我国身份证号码多由若干位数字或者数字与字母混合组成.早期身份证由15位数字构成,这主要是在1980年以前发放的身份证,后来考 ...
- 校验18位身份证号码(判断最后一位校验位和性别)
身份证号码组成 公民身份号码是一系列组合码,由十七位数字本体码和一位校验码组成. 排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码. 18位身份证最后一位校验码的 ...
- js中15位及18位身份证号码的校验
15位身份证结构: 地区代码(6位),年(2位)月(2位)日(2位),顺序码(3位,最后1位偶数代表女,奇数代表男) 18位身份证结构: 地区代码(6位),年(4位)月(2位)日(2位),顺序码(3位 ...
- 15或18位身份证号码增强校验
1. 背景简介 目前部分项目用到了增强的身份证号码验证,要验证15位.18位.行政区划.日期合法性.校验位(仅对18位)等特点. 当前i产品仅提供一个函数idcheck可以用来验证身份证合法性,用法为 ...
- 15/18位身份证号码验证的正则表达式总结(详细版)
前言 开发过程中,常常需要对一些输入信息进行有效性验证,使用正则表达式进行校验是最简单.效率最高的方式了,下面就来看看15/18位身份证号码验证的正则表达式吧. 介绍 xxxxxx yyyy MM d ...
- java代码实现15位身份证号码升级到18位
转载网址 点击打开链接 转载一份作为记录,真心不错.受教! 18位身份证号码的组成: 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字 ...
最新文章
- R语言嵌套的ifelse语距:将一条If语句放在另一条If语句中,该语句作为嵌套的If else调用。If else语句允许我们根据表达式结果(TRUE或FALSE)打印不同的语句,执行不同的语句块
- 太多选择——企业如何选择合适的BI工具?
- 浅谈SQL Server 数据库的触发器
- 如何快速掌握man手册的使用
- cmake的一个编译报错
- WMI Defense
- 北大学子求职经历与建议(IT类) 收藏
- SpringCloudOAuth2之验证资源服务器的配置
- BFS(宽度优先算法)
- PS-fiveday-快速选择和魔棒工具(快速抠图)
- QT的下载与安装(QT5.9.1)
- 7-45 实验8_2_推销员的便条 (100 分)
- Android中 手机震动功能的实现
- Java中的字符串及其中的常用方法
- 做新时代的忠诚爱国者写一篇议论文800字
- win10电脑一开夜神模拟器就蓝屏解决方法,亲测多次好用!
- redis 持久化和恢复
- 多个excel工作簿、工作表合并
- 【VBS教程3】:VBS如何激活指定窗口
- Pytorch2.0发布了,向下兼容,加一句代码,性能翻番
热门文章
- 清除计算机病毒更换内存芯片,电脑内存条中病毒了怎么处理?
- 当前系统代理不是安全代理,是否信任
- 深度知识的6个维度:如何让人工智能真正理解世界?
- 混凝土搅拌站远程监控解决方案
- 多子棋(三子棋plus版本)
- linux查硬件信息的命令,Linux查看硬件信息的命令
- springboot yml使用
- python tkinter listbox_python tkinter listbox事件绑定
- 暴风魔镜与手柄相关的事件
- 揭秘考研阅卷“潜规则”,这样的试卷能“加分”!