`
icyheart
  • 浏览: 763698 次
  • 性别: 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];

}

 

分享到:
评论

相关推荐

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

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

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

    通过js验证身份证是否有效的js以及身份证的验证算法详解;包括详细的js代码

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

    对于其它的语言也有不少的身份证验证了,这里的代码效果更简单

    JS 身份证验证程序

    最新js算法,验证身份证有效性、区域等(含减肥版)

    身份证验证算法(good)

    一个身份证识别的算法,有具体的c语言实现,简洁明了,适合初学者

    身份证号码位数及格式验证范例VB版

    内容索引:VB源码,字符处理,身份证 身份证号码位数及格式验证范例VB版,能够按照身份证号码所规定的格式进行验证,比如代表区域性的前五位是否正确,代表出生日期的是否正确,以及最后位及总位数是否正确等做出合法...

    查验身份证C语言源代码

    验证一个18位的身份证号码是否正确。按照最后一个验证码的算法进行验证

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

    二代身份证号码为18位,怎么编写函数实现对身份证号码最后一位的验证功能呢?今天小编通过代码给大家分享下实现方法

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

    由于响应速度极快,可以肯定不是联机校验正确性的,那也就是说第二代身份证除了大家都知道的几位表示生日和性别的规则以外,还有另外的自我校验规则。于是翻开页面源码查看,发现这段js没有被压缩,所以规则也很好懂...

    jQuery使用正则验证15/18身份证的方法示例

    按照身份证的算法定制而成,精确度完美支持15和18位. 错一个数字或字母都通不过,无需通过数据处理来验证 //身份证检验 var vcity={ 11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古", 21:"辽宁",22:"吉林",23:...

    javascript验证身份证完全方法具体实现

    下面这段代码完全实现了判断身份证是否合格.传入身份证号码就行了。包括了公安部的算法。下面的是用Ext实现的。但是基于javascript的语法居多,基本都可以用

    Luhn算法学习及其Ruby版实现代码示例

    Luhn算法主要北用来进行数字验证,尤其是卡号身份证号等,这里我们就来看一下Luhn算法学习及其Ruby版实现代码示例:

    python项目基于深度学习的身份证识别考勤系统(django).zip

    这个系统通过深度学习算法来准确识别身份证信息,并结合考勤功能进行人员管理。 2. **技术实现**:项目利用了深度学习技术来进行身份证的图像识别,这可能涉及到图像处理、特征提取和模式识别等多个方面的技术知识。...

    判断用户输入的银行卡号是否正确的方法(基于Luhn算法的格式校验)

    开发中,有时候,为了打造更好的用户体验,同时减轻服务器端的压力,需要对于一些如,手机号码,银行卡号,身份证号码进行格式校验 下面是判断银行卡号输入是否正确的代码(基于Luhn算法的格式校验): iOS代码: /...

    两轮差速履带车跟踪控制验证附matlab代码+运行结果.zip

    ### 1 智能优化算法及应用 **1.1 改进智能优化算法方面(单目标和多目标)** **1.2 生产调度方面** 1.2.1 装配线调度研究 1.2.2 车间调度研究 1.2.3 生产线平衡研究 1.2.4 水库梯度调度研究 **1.3 路径规划...

    基于OpenCV+tesseract-ocr实现身份证识别.zip

    科研与教育:作为计算机视觉教学和研究的基础工具,OpenCV简化了算法原型开发与验证过程。 工业自动化:在视觉检测、机器人导航、产品质量控制等工业场景中,OpenCV用于实时图像分析与决策。 安防监控:用于...

    yii2-mfa:Yii2模块提供多因素身份验证

    Yii2 MFA Yii2项目的多因素身份验证 该软件包提供: 基于时间的一次性密码算法,用于两因素验证检查用户允许的IP 生成并检查恢复代码(已计划) 用途: twofactorauth用于TOTP 用于确认令牌可以插入任何现有的Yii2...

Global site tag (gtag.js) - Google Analytics