`

二代身份证号码校验算法

 
阅读更多
身份号码由十七位数字本体码和一位校验码组成。
排列顺序从左至右依次为:六位数字地区码,八位数字生日码,三位数字顺序码和一位数字校验码。
校验方法:

(1)先对前17位数字的权求和
        S = Sum(Ci * Vi), i = 0, ... , 16

        Ci:表示身份证号码上第i位置的数字值

        Vi:表示第i位置上的“加权因子”
        加权因子Vi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2

(2)计算模(固定算法)
        Y = mod(S, 11)

(3)将计算模Y与对应的校验码校验
        Y:        0 1 2 3 4 5 6 7 8 9 10 (通过Y取得对应校验码与身份证的第18位校验)
        校验码: 1 0 X 9 8 7 6 5 4 3 2

 
/**
* 检验18位身份证号码(15位号码可以只检测生日是否正确即可)
* @author wolfchen
* @param cid 18为的身份证号码
* @return Boolean 是否合法
**/
function isCnNewID(cid){
    var arrExp = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];//加权因子
    var arrValid = [1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2];//校验码
    if(/^\d{17}\d|x$/i.test(cid)){
	    alert(cid);
        var sum = 0, idx;
        for(var i = 0; i < cid.length - 1; i++){
            // 对前17位数字与权值乘积求和
            sum += parseInt(cid.substr(i, 1), 10) * arrExp[i];
        }
        // 计算模(固定算法)
        idx = sum % 11;
        // 检验第18为是否与校验码相等
        return arrValid[idx] == cid.substr(17, 1).toUpperCase();
    }else {
	  return false;
	}
}
 
分享到:
评论

相关推荐

    详解正则表达式实现二代身份证号码验证

    二代身份证号码一般为18位数字,前6位为地址码,接下来的8位为出生日期码,之后的3位为顺序码,最后一位为校验码。以下知识点将详细介绍如何使用正则表达式对二代身份证号码进行验证。 1. 正则表达式基础知识点 ...

    swift-iOS中国二代身份证号扫描识别

    此项目可能是一个利用Swift编程语言实现的库或者示例,用于帮助开发者高效准确地读取和识别中国第二代居民身份证(简称“二代身份证”)上的号码。 二代身份证号码在中国具有18位,包含个人信息如出生日期、性别、...

    通用二代身份证Delphi读卡源码..rar

    标题中的“通用二代身份证Delphi读卡源码”指的是使用Delphi编程语言编写的软件源代码,用于读取中国第二代身份证的信息。Delphi是一种基于Object Pascal的集成开发环境(IDE),常用于创建Windows桌面应用程序。它...

    jquery 校验中国身份证号码实例详解

    身份证号码校验算法主要包含以下步骤: 1. 权值计算:首先需要对前17位数字按照一定的加权因子进行加权求和。加权因子为一组固定的数字序列(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2),其中第一位权值对应身份证号码...

    代码整理-二代身份证SDK.rar

    在这个案例中,二代身份证SDK帮助开发者集成身份证读取、验证和处理的功能,通常包括扫描身份证、提取信息、校验真伪等操作。 2. **DLL(Dynamic Link Library)**: DLL是Windows操作系统中的共享库文件,它包含...

    IDCardOCR_China, 基于tesseract,实现摄像头扫描识别中国二代身份证.zip

    《基于Tesseract的中国二代身份证OCR技术详解》 在当今数字化时代,自动识别技术在各个领域都有着广泛的应用,其中身份证识别技术尤其重要。本项目“IDCardOCR_China”是针对中国第二代身份证(简称“二代证”)...

    js 第二代身份证号码的验证机制代码

    也就是说,即使身份证号码通过了算法校验,也不代表该号码对应的身份证是真实有效的,只是表明其符合身份证号码的编排规则而已。 通过分析和理解上述代码,我们可以得知第二代身份证号码的验证机制是通过特定的算法...

    JS编写函数实现对身份证号码最后一位的验证功能

    本文将详细介绍如何编写一个函数来验证身份证号码的最后一位,确保它符合中国的二代身份证号码计算规则。 首先,我们要理解身份证号码的构成。中国第二代身份证号码为18位,其中包含了个人的出生日期、性别以及地区...

    身份证读卡

    【二代身份证】是指中国自2004年起发行的内置非接触式IC芯片的新版身份证,它存储了持证人的个人信息,包括姓名、性别、出生日期、住址、公民身份号码等。这些信息以数字编码的形式存储在芯片中,可以通过特定的设备...

    python 身份证验证

    校验码通过特定算法计算得出,用于检验整个号码的正确性。 Python身份证验证的核心在于校验码的计算。我们可以编写一个函数,根据身份证号码的前17位来计算校验码。这个计算涉及到模11的加权和,每个数字有不同的...

    新中新二代证阅读器 SDK开发包.rar

    二代身份证内置了RFID芯片,存储了持证人的个人信息,如姓名、性别、出生日期、住址、身份证号码等。通过阅读器,SDK能够与身份证的RFID芯片进行通信,读取这些信息并将其转换为可处理的数据格式。这一过程通常涉及...

    五 年级上册数学课件-6.6数学广场——编码|沪教版(2015秋) (共27张PPT).pptx

    一代身份证没有校验码,而二代身份证引入了这一机制,增强了号码的准确性。同时,还提到了三代身份证的概念,虽然未给出具体号码,但可以推测其可能包含更多的个人信息或者采用了更先进的技术。 此外,课件还展示了...

    s基于wince的身份证认证系统

    3. **身份验证算法**:系统会应用特定的算法对身份证信息进行校验,确保信息的真实性和合法性。这包括校验码计算、有效期检查等。 4. **用户界面**:设计适应Windows CE操作系统的用户界面,使用户能方便地进行...

    PHP 验证身份证是否合法的函数

    4. 身份证校验码验证:18位身份证号码的最后一位是校验码,用来检查身份证号码的前17位是否正确。校验码的计算方法是按照ISO7064:1983.MOD11-2的规定进行的。具体算法是将前17位数字按照特定权重进行加权求和,然后...

    JS前后端实现身份证号验证代码解析

    考虑到目前二代身份证已广泛使用,一代身份证的验证在现代网络应用中可能不再常见。 综上所述,实现身份证号验证需要理解其结构和校验机制,并在前端和后端分别编写相应的验证代码。通过双重验证,可以有效地提高...

    Javascript使用正则验证身份证号(简单)

    5. 对于复杂的身份证号码验证,需要进一步的算法进行有效性校验。 以上知识点不仅适用于JavaScript,也适用于其他编程语言中的正则表达式应用。掌握这些知识点可以帮助开发者在处理相关问题时更加得心应手。

    神思身份证验证工具驱动文件 100型驱动-USBdriver

    这个过程包括了数据的读取、解密、校验以及网络通信等步骤,确保了验证的安全性和准确性。 此外,为了保障数据安全,该驱动可能还包含了加密算法,以防止在传输过程中个人信息被窃取。同时,设备可能还有防止非法...

    MFRC522读卡c51

    7. **CRC校验**:为了检测数据传输中的错误,MFRC522和IC卡都使用CRC(Cyclic Redundancy Check)校验。C51程序中需要计算并检查CRC值,确保数据的完整性。 8. **C51编程技巧**:使用C51时,需要注意内存管理、优化...

Global site tag (gtag.js) - Google Analytics