`
icyheart
  • 浏览: 777435 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

18位身份证号码含义及验证算法代码

阅读更多

18位的身份证号码:450104197710101516

(1)1~6位为地区代码,其中1、2位数为各省级政府的代码(广西为45),3、4位数为地、市级政府的代码(南宁市为01),5、6位数为县、区级政府代码(西乡塘区为04)。

(2)7~10位为出生年份(4位),如1977

(3)11~12位为出生月份,如10

(4)13~14位为出生日期,如10

(5)第15~17位为顺序号,为县、区级政府所辖派出所的分配码,每个派出所分配码位10个连续号码,例如“150—159”,其中单数为男性分配码,双数为女性分配码,如遇同年同月同日有两人以上时顺延第二、第三、第四、第五个分配码。

(4)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];

}

 

分享到:
评论

相关推荐

    C++中身份证号码验证代码

    2. **长度检查**:验证身份证号码的长度是否为18位。可以使用`id.size()`来检查字符串长度,如果长度不等于18,就返回错误信息。 3. **字符类型检查**:检查每个字符是否都是数字,这可以通过遍历字符串并用`...

    java实现的18位身份证格式验证算法

    身份证验证算法是计算机编程中一个常见的实用功能,特别是在处理个人数据和进行实名认证的场景下。在Java中实现18位身份证格式验证涉及到多个步骤,主要包括:校验位计算、出生日期转换以及地区编码验证。下面将详细...

    C#实现的18位身份证格式验证算法

    ### C#实现的18位身份证格式验证算法详解 身份证号码在中国大陆地区是个人身份的重要标识,由18位数字组成,其中包含了个人的出生日期、性别以及户籍所在地等信息。18位身份证号码遵循GB11643-1999标准,该标准在...

    身份证号码验证的代码

    首先,中国居民身份证号码共18位,分为6个部分:前6位代表行政区划代码,第7到14位为出生日期码(格式为YYYYMMDD),第15到17位为顺序码(奇数分配给男性,偶数分配给女性),最后一位是校验码。校验码可能是0到9中...

    PHP精确验证身份证号

    身份证号码是中国公民的重要身份标识,由18位数字组成,包含出生日期、性别、地区代码以及校验码。为了确保输入的数据是有效的,我们可以编写专门的函数来验证身份证号码。 首先,我们需要理解身份证号码的结构。前...

    验证身份证号码有效性的js

    本文将深入探讨如何使用JavaScript来验证身份证号码的有效性,并解析相关的验证算法。 首先,中国的身份证号码由18位数字组成,分为三个部分:6位地址码、8位出生日期码和最后4位顺序码与校验码。校验码是根据前17...

    SQL 存储过程 身份证号码验证完整算法

    身份证号码验证算法 (一) 18身份证号码的结构  公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。 排列顺序从左至右依次为:六位数字地址码 + 八位数字出生日期码 + 三位数字顺序码 + 一位校验码。...

    java身份证号验证源代码

    中国的身份证号码前6位代表地区代码,接着的8位表示出生日期(格式为YYYYMMDD),接下来的3位是顺序码,偶数分配给女性,奇数分配给男性,最后一位是校验码,可能是0-9中的数字或字母X。 要进行身份证号码验证,...

    验证身份证号是否有效,包括有效位验证

    - **校验码验证**(仅适用于18位身份证号码):通过特定算法计算出校验码,并与身份证号码最后一位进行比较。 ### 具体实现细节 #### 1. 长度检查 检查输入的身份证号码是否为15位或18位,如果不符合则认为无效。 ...

    C#身份证验证器

    在IT行业中,身份证验证器是一种常见的实用工具,主要用于验证个人身份证号码的合法性,并根据有效身份证号码解析出对应的身份信息,如出生日期、性别以及户籍所在地等。本项目以C#编程语言实现,提供了用户友好的...

    18位身份证验证java程序实例

    4. **第十八位**:校验码,用于验证前面17位数字的有效性。 #### 校验码计算规则 校验码是根据前17位数字计算得出的。具体步骤如下: 1. 将前17位数字分别乘以不同的权重系数(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9...

    身份证号码验证示例源码2008-4-22

    这个示例源码提供了ASP.NET和C#实现的身份证号码验证功能,可以处理15位和18位的身份证号码,并声称有90%的成功验证率。下面我们将详细探讨身份证号码验证的原理以及该示例源码可能涉及的关键技术。 1. **身份证...

    身份证号码验证源代码

    本程序利用汇编语言(具体为80x86架构)编写了一个身份证号码验证程序,用于检验输入的身份证号是否合法,并能进一步提取并展示用户的年龄、籍贯及出生日期等信息。 #### 二、关键技术点解析 ##### 2.1 数据段定义...

    vb开发的身份证号码识别代码

    18位身份证号码是中国居民身份证的主要标识,包含了个人出生日期、性别、出生地等信息,并通过校验码进行有效性验证。下面我们将深入探讨如何在VB中实现18位身份证号码的识别代码。 首先,我们需要了解18位身份证...

    JAVA 18位身份证号码校验码的算法

    18位身份证号码由17位数字和1位校验码组成,校验码的计算遵循特定的算法。以下是对给定代码的详细解释,以及如何理解和实现这个算法。 首先,身份证号码的校验码算法基于前17位数字。该算法的核心在于一个加权因子...

    h5校验身份证号码

    4. **校验码**(第十八位,仅18位身份证有此位):通过特定算法计算得出,用于校验身份证号码的有效性。 #### 三、验证逻辑详解 接下来,我们将基于上述结构分析,详细介绍具体的验证逻辑。 1. **初步验证**: - ...

    一个关于身份证号码验证程序

    中国的身份证号码由18位数字组成,分为多个部分,每部分都有特定的含义。下面将详细介绍身份证号码的结构及其验证过程。 首先,18位身份证号码的组成部分包括: 1. 地区码(前6位):代表出生地的行政区域代码,...

Global site tag (gtag.js) - Google Analytics