18位身份证号码验证算法代码

转载 2007年09月18日 13:17:00
介绍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[]={7910584216379105842};
    
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 ",iS, iY);
//    printf("%c  ",szVerCode[iY]);
    return szVerCode[iY];

}
 

身份证号码编码方法及校验算法

身份证号码编码方法及校验算法1 身份证号码的字段构成: 地址码身份证前六位,表示户口所在县(市、旗、区)的行政区划代码。 生日码身份证第七至第十四位,表示出生的年、月、日。 顺序码身份证十五到十七位,...
  • tobacco5648
  • tobacco5648
  • 2016年01月31日 00:44
  • 51220

【algorithm】源码详解中国大陆新身份证号码算法

之前印象身份证最后一位奇数为男性,偶数为女性。看了下算法才明白,这指的是老身份证15位,18位身份证末尾加了一个校验码,用来验证是否为真实身份证号。 先看中国大陆身份证结构: 1、号码的结构 公民身份...
  • gangannini
  • gangannini
  • 2013年09月05日 17:40
  • 2361

身份证规则验证 Java代码

未来可能会用,暂留(未验证) 出处:http://blog.csdn.net/suncaoyong/article/details/8647037 package com.haier.hmm...
  • fssf0079
  • fssf0079
  • 2014年02月12日 15:47
  • 4562

18位身份证号码验证代码

  • 2010年12月14日 17:05
  • 119KB
  • 下载

新旧身份证合法性验证及相互转换算法(三):Java身份证号码验证及将15位转换18位

package test; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 身份证号码验证...
  • mlj1668956679
  • mlj1668956679
  • 2014年06月27日 11:38
  • 904

java代码实现15位身份证号码升级到18位

18位身份证号码的组成: 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码, 三位数字顺序码和一位数字校验码。 六位数字地址...
  • mhmyqn
  • mhmyqn
  • 2012年06月22日 12:14
  • 10543

java代码实现15位身份证号码升级到18位

转载网址   点击打开链接 转载一份作为记录,真心不错。受教! 18位身份证号码的组成: 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地...
  • u012271269
  • u012271269
  • 2013年09月27日 21:17
  • 301

身份证号码15到18位升位算法

身份证号码15到18位升位算法        根据〖中华人民共和国国家标准 GB 11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成...
  • lixing732100721
  • lixing732100721
  • 2013年03月29日 13:36
  • 839

面向对象的15位、18位中国大陆身份证号码解析、验证工具

import java.text.SimpleDateFormat; import java.util.Date; /** * 身份证号码,可以解析身份证号码的各个字段,以及验证身份证号码是否有效...
  • love_baobao
  • love_baobao
  • 2011年12月19日 15:41
  • 520

面向对象的15位、18位中国大陆身份证号码解析、验证工具

import java.text.SimpleDateFormat; import java.util.Date; /** * 身份证号码,可以解析身份证号码的各个字段,以及验证身份证号码...
  • w627782664
  • w627782664
  • 2012年02月29日 12:43
  • 909
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:18位身份证号码验证算法代码
举报原因:
原因补充:

(最多只允许输入30个字)