例如某18位身份证号为:ABCDEF YYYY MMDD SSSV

第1位——第6位代表(ABCDEF):表示区域。

第7位——第14位(YYYYMMDD):表示出身日期,例如20140809。

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

第18位(V):校验码,根据前17位数字和计算公式得出,计算公式是:x=Sum(Ai*217-i+1) mod 11 ,其中i=1,2,3,...,17,Ai是第i位身份证号码(从左往右数),x结果是从0到10,分别对应的V是1 0 X 9 8 7 6 5 4 3 2。

之所以mod11,而不是10是因为取模通常取素数。

自己写了个小程序用于计算最后一位校验码

Input:前17位身份证号

Output:最后一位是:X

demo:

#include<iostream>using namespace std;int main()
{char card_number_17[17];while (cin >> card_number_17 && card_number_17[17]!=EOF){int sum = 0;char last='\0';for (int i = 17; i >= 1; i--){sum += (card_number_17[17 - i] - '0')*pow(2,i);}switch (sum%11){case 0:last = '1';break;case 1:last = '0';break;case 2:last = 'X';break;case 3:last = '9';break;case 4:last = '8';break;case 5:last = '7';break;case 6:last = '6';break;case 7:last = '5';break;case 8:last = '4';break;case 9:last = '3';break;case 10:last = '2';break;default:break;}cout <<"最后一位是:"<< last << endl;last = '\0';}return 0;
}

ps:因为第15至第17位是表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。所以还要隐形的满足的条件是:同一地区同年同月同日不出生多于500个同性人(10*10*5=500)。

18位身份证号编码规则最后一位相关推荐

  1. 18位身份证号藏了什么玄机?用js教你校验身份证

    大家好,想必各位程序猿已经有所发现,而相应地,在日常的开发任务需求了很多跟涉及到用户的都几乎需要用到身份证的校验,因此不留君特意整理出一份身份证号的组成原理以及 校验函数(js版) [身份证号码的规则 ...

  2. 身份证校验(//身份证号合法性验证 //支持15位和18位身份证号//支持地址编码、出生日期、校验位验证)

    window.checkIdNumber=(function () {var vcity = {11: "北京", 12: "天津", 13: "河北 ...

  3. mysql根据严格校验15位和18位身份证号是否有效的自定义函数

    验证18位身份证有效性的规则: 1.长度: 2.区划编码: 3.出生日期: 4.最后一位验证: 第一步:对身份证做去空处理: 第二步:对15位身份证号进行验证: 第三步:对18位身份证进行验证: 最后 ...

  4. js 身份证精确校验(支持15位和18位身份证号 )

    js 校验方法 //身份证号合法性验证 //支持15位和18位身份证号 //支持地址编码.出生日期.校验位验证 function IdentityCode(code){var city={11:&qu ...

  5. 18位身份证号验证算法的原理以及C#实现和在管理系统的应用

    18位身份证号验证算法的原理以及C#实现和在管理系统的应用 本博文介绍一下我自主开发的企业工资管理系统中关于员工18身份证号合法性验证的原理以及采用C#实现的代码.在实际的管理系统中应用!经过我自己的 ...

  6. C#一个完整判断18位身份证号正确函数

    C#一个完整判断18位身份证号正确函数 private static bool CheckIDCard18(string CardId){string pattern = @"^\d{17} ...

  7. js根据15,18位身份证号获取生日与性别

    15位身份证号:第6.7位为年份,8.9位为月份,10.11为日.最后一位为性别,男为奇数,女为偶数.  18位身份证号:第6.7.8.9位为年份,10.11位为月份,12.13为日.最后一位为性别, ...

  8. java8 通过18位身份证号提取用户信息(年龄,生日,姓别)

    工作中经常用到的通过身份证号(18位)提取用户信息(年龄,生日,姓别),分享给大家: 先做一个javabean 存用户信息: package com;import lombok.*;import ja ...

  9. 学习正则表达式 - 18位身份证号

    一.身份证号规则 18位身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码.其含义如下: 地址码:表示编码 ...

最新文章

  1. java算法----排序----(6)希尔排序(最小增量排序)
  2. 19-Realm Management Extension (RME)
  3. java 线程 操作系统线程_线程基础:线程(1)——操作系统和线程原理
  4. Java命令行界面(第5部分):JewelCli
  5. 递归求和的复习-计算m~n整数和
  6. 多继承、经典类与新式类、新式类的C3算法详解
  7. oracle存储过程转mysql存储过程修改方法
  8. iOS - Swift 与 Objective-C 互相操作
  9. Endurance for Mac(电池续航管理提升工具)
  10. QML Qt.binding
  11. 在远程linux服务器上用wget命令下载nuscenes数据集出现HTTP request sent, awaiting response... 403 Forbidden错误
  12. Java实现HighCharts纯后台图表生成
  13. XML的解析方法(如何解析XML)
  14. php json输出对象的属性值,JavaScript_jquery动态遍历Json对象的属性和值的方法,1、遍历 json 对象的属性/ - phpStudy...
  15. 萝卜家园 Ghost XP 新春装机版 V200801
  16. Python 必须掌握的知识
  17. pdf裁边app_Paper for Kindle
  18. Python+Streamlit实现项目成本管理挣值分析可视化
  19. 田宗仁:没有资金应当如何创业?
  20. 企业做定制网站建设的必要性

热门文章

  1. 新手上路vscode+php|php文档格式化与代码重构
  2. JavaScript实现模糊匹配
  3. 浏览器无法访问某个网站,其他网站都正常
  4. 二.android 12 修改文件夹背景透明度
  5. Design Compiler综合出来的网表中出现\**SEQGEN**,解决方案
  6. Facebook与用户达成和解:为数据隐私问题赔偿5.5亿美元
  7. python分析股票主力_python如何获取股票数据,python股票分析系统
  8. C语言逻辑类型与运算
  9. 如何为360浏览器设置http代理服务器
  10. 本地代码无问题邮件却发送失败的问题