介绍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位身份证号码最后一位校验码的计算方法相关推荐

  1. 关于18位身份证号码最后一位计算(Java实现)

    关于18位身份证号码最后一位计算(Java实现) 现代的身份证号码长度都是18位的,但是只要知道前17位便可推出第18位数字或者字母(第18位为0,1,...,9和X中的一个).也就是说,国内不存在前 ...

  2. 18位身份证号码最后一位校验

    1 package com.jdk7.chapter5; 2 3 /** 4 * 仅能校验15位或18位身份证号的校验码 5 * @author Administrator 6 * 7 */ 8 pu ...

  3. Oracle 通过15位或18位身份证号码计算年龄、出生年月日、性别

    15位身份证号码各位的含义: 地址码(前六位数):表示身份证编码对象常住户口所在省份.地市,以及县(市.旗.区)的行政区划代码,1-2位数字表示所在地省.自治区.直辖市代码,第3.4位数字表示所在地地 ...

  4. 15位和18位身份证号码的结构介绍

    身份证号码编码方法 要进行身份证号码的验证,首先要了解身份证号码的编码规则.我国身份证号码多由若干位数字或者数字与字母混合组成.早期身份证由15位数字构成,这主要是在1980年以前发放的身份证,后来考 ...

  5. 校验18位身份证号码(判断最后一位校验位和性别)

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

  6. js中15位及18位身份证号码的校验

    15位身份证结构: 地区代码(6位),年(2位)月(2位)日(2位),顺序码(3位,最后1位偶数代表女,奇数代表男) 18位身份证结构: 地区代码(6位),年(4位)月(2位)日(2位),顺序码(3位 ...

  7. 15或18位身份证号码增强校验

    1. 背景简介 目前部分项目用到了增强的身份证号码验证,要验证15位.18位.行政区划.日期合法性.校验位(仅对18位)等特点. 当前i产品仅提供一个函数idcheck可以用来验证身份证合法性,用法为 ...

  8. 15/18位身份证号码验证的正则表达式总结(详细版)

    前言 开发过程中,常常需要对一些输入信息进行有效性验证,使用正则表达式进行校验是最简单.效率最高的方式了,下面就来看看15/18位身份证号码验证的正则表达式吧. 介绍 xxxxxx yyyy MM d ...

  9. java代码实现15位身份证号码升级到18位

    转载网址   点击打开链接 转载一份作为记录,真心不错.受教! 18位身份证号码的组成: 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字 ...

最新文章

  1. R语言嵌套的ifelse语距:将一条If语句放在另一条If语句中,该语句作为嵌套的If else调用。If else语句允许我们根据表达式结果(TRUE或FALSE)打印不同的语句,执行不同的语句块
  2. 太多选择——企业如何选择合适的BI工具?
  3. 浅谈SQL Server 数据库的触发器
  4. 如何快速掌握man手册的使用
  5. cmake的一个编译报错
  6. WMI Defense
  7. 北大学子求职经历与建议(IT类) 收藏
  8. SpringCloudOAuth2之验证资源服务器的配置
  9. BFS(宽度优先算法)
  10. PS-fiveday-快速选择和魔棒工具(快速抠图)
  11. QT的下载与安装(QT5.9.1)
  12. 7-45 实验8_2_推销员的便条 (100 分)
  13. Android中 手机震动功能的实现
  14. Java中的字符串及其中的常用方法
  15. 做新时代的忠诚爱国者写一篇议论文800字
  16. win10电脑一开夜神模拟器就蓝屏解决方法,亲测多次好用!
  17. redis 持久化和恢复
  18. 多个excel工作簿、工作表合并
  19. 【VBS教程3】:VBS如何激活指定窗口
  20. Pytorch2.0发布了,向下兼容,加一句代码,性能翻番

热门文章

  1. 清除计算机病毒更换内存芯片,电脑内存条中病毒了怎么处理?
  2. 当前系统代理不是安全代理,是否信任
  3. 深度知识的6个维度:如何让人工智能真正理解世界?
  4. 混凝土搅拌站远程监控解决方案
  5. 多子棋(三子棋plus版本)
  6. linux查硬件信息的命令,Linux查看硬件信息的命令
  7. springboot yml使用
  8. python tkinter listbox_python tkinter listbox事件绑定
  9. 暴风魔镜与手柄相关的事件
  10. 揭秘考研阅卷“潜规则”,这样的试卷能“加分”!