昨天项目要求将身份证做一次验证,于是总结了一下C/C++下身份证号码的实现

身份证号码的构成

资料显示,现在我国公民使用的18为身份证号码,是由前 17位信息码和最后一位校验码组成。而,前17为信息码,又有各自的含义:六位地址码,八位出生日期码,三位顺序码。地址码(身份证前六位)
       一。六位地址码
            前六位的地址码,是按照GB/T2260的规定,给常住户口所在县(市、旗、区)的行政区域分配的代码。
       二。出生日期码(身份证中8位)
             8为的出生日期,分别是 XXXX年XX月XX日
       三。顺序码 
             表示在同一地区,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。

身份证号的验证方法

校验码,是由前十七位数字码加权求和取模得到的数字,对应的校验码数组元素。

前17位数字码的权重分别是:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2

其中,校验码数组为:1 0 X 9 8 7 6 5 4 3 2

至此,我们只需要将求出的校验码和身份证的第18位比较,即可知道该身份证号的正确与否。

MFC实现

bool CMy0121124829Dlg::SFZHValidate(CString sfz)
{int weight[]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};char validate[]={ '1','0','X','9','8','7','6','5','4','3','2'};  int sum=0;int mode=0;if (sfz.GetLength()==18){for(int i=0;i<sfz.GetLength()-1;i++){sum=sum+(sfz[i]-'0')*weight[i];}mode=sum%11;if (validate[mode]==sfz[17]){return true;}}
 return false;
}

身份证号码验证--C/C++ 实现相关推荐

  1. javascript身份证号码验证函数支持带x

    //--身份证号码验证-支持新的带x身份证 function isIdCardNo(num)  {     var factorArr = new Array(7,9,10,5,8,4,2,1,6,3 ...

  2. 身份证号码验证-支持新的带x身份证

    //--身份证号码验证-支持新的带x身份证 function isIdCardNo(num)  {     var factorArr = new Array(7,9,10,5,8,4,2,1,6,3 ...

  3. C#实现身份证号码验证的方法

    本文实例讲述了C#实现身份证号码验证的方法.分享给大家供大家参考.具体实现方法如下: 随着现在互联网的发展,越来越多的注册用户的地方都用到了身份证,那么对于输入的身份证如何验证呢?看下面的代码,其实很 ...

  4. .net身份证号码验证

    using System; /// <summary>/// Summary description for IDCardValid/// </summary>public c ...

  5. 正则实现二代身份证号码验证详解

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

  6. 身份证号码验证——C语小程序言

    身份证号码验证--C语小程序言 #include <stdio.h> int main(){int a, b, num = 0, sum = 0;int arr[17] = {0};int ...

  7. java对台湾同胞身份证号码验证

    package com.yt.eos.common.enumclass;import org.apache.commons.lang3.StringUtils;/*** 台湾同胞身份证号码验证* @a ...

  8. 身份证号码验证(转)

    文章出处: http://dengo.org/archives/941 不少大的游戏注册时都要输入身份证号码,来限制未成年人,配合所谓的反沉迷系统,账号注册环节注重的是快捷,所以身份证验证都不是真实的 ...

  9. JS正则表达式-附身份证号码验证(简易版)

    文章目录 JS正则表达式 匹配与搜索 一.方括号,圆括号 二.修饰符 三.元字符 四.量词 身份证号码验证(简易版) 身份证号码规则: 1.地址码 2.年份码 3.月份码 4.日期码 5.顺序码 6. ...

  10. Android身份证号码验证

    最近用到身份证号码验证,在网上看了些资料,写了些方法记录下: 文章迁至:Java/Android通用身份证号验证 public class IDCardValidate {public static ...

最新文章

  1. 9. Leetcode 27. 移除元素 (数组-同向双指针-快慢指针)
  2. bzoj 1596 电话网络
  3. 需求、需求工程与需求工程师 — 3. 需求工程的构成
  4. Python父与子的编程之旅 第八章答案
  5. 自媒体图文、视频素材网站哪里找?这些非常好用
  6. EDA技术与VHDL设计
  7. Linear Mixde Model:线性混合模型简介
  8. C语言蓝桥杯刷题:等差素数列
  9. Tilera多线程网络编程总结
  10. Java 网络编程 -- 基于TCP 实现聊天室 群聊 私聊
  11. application octet stream java_java – JSP下载 – application / octet-stream
  12. PS青山绿水婚片处理
  13. Scala—— 18.映射Map
  14. 力扣第235题“二叉搜索树的最近公共先祖”的解题思路
  15. 华为交换路由命令学习笔记
  16. 社群团购到底有哪些优势?为什么社群团购很容易打造爆品?
  17. 【翻译】Unity2017.2.0f3 版本发布说明
  18. 3、MacBook 跳到行尾、行首、Home和end快捷键
  19. Django中视图和URL中的常用方法
  20. 洛谷 5061 秘密任务——二分图染色

热门文章

  1. DELL PowerEdge 远程开机
  2. 在修路的时候或者建筑工地,为什么要有人支着一个三脚架测量,其实三脚架上面还有仪器的,通常是四种:水准仪、经纬仪、全站仪、GPS。(前三种较常见)可以理解为分别测:高度差、角度、距离加角度、地理坐标
  3. 朋友圈如何分享pdf
  4. webrtc 使用了aec_使用适用于AEC的PiXYZ插件更快地设计,构建和运行
  5. 美团点评java开发面试问题
  6. OJ1343——First Blood
  7. spice-gtk-0.35源代码解析之spicy解析
  8. 同事说聊天没有表情,我在内网搭了一个表情包网站
  9. 京东能成为快手的老铁吗?
  10. Unity_安卓(Android)端AVProVideo插件播放不了视频问题解决