- 浏览: 140446 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
puyancheng1988:
哥们儿,我用的jfreechart在linux服务器上生成的图 ...
JFreeChart图表 -
soujava:
...
Linux下Oracle自动备份脚本 -
skylikeblue:
...
基于JAVA实现的手机收发短消息系统
公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
1、地址码
表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按 GB/T 2260 的规定执行。
2、出生日期码
表示编码对象出生的年、月、日,按 GB/T 7408 的规定执行。
年、月、日代码之间不用分隔符。
例:某人出生日期为 1966年10月26日,其出生日期码为19661026。
3、顺序码
表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数千分配给女性。
4 、校验码
校验码采用ISO 7064:1983,MOD 11-2 校验码系统。
(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
下面是java实现的代码:
package org.yz21.study.idcard;
public class IDCard {
// wi =2(n-1)(mod 11)
final int[] wi = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1};
// verify digit
final int[] vi = {1,0,’X’,9,8,7,6,5,4,3,2};
private int[] ai = new int[18];
public IDCard() {
}
//verify
public boolean Verify(String idcard) {
if (idcard.length() == 15) {
idcard = uptoeighteen(idcard);
}
if (idcard.length() != 18) {
return false;
}
String verify = idcard.substring(17, 18);
if (verify.equals(getVerify(idcard))) {
return true;
}
return false;
}
//get verify
public String getVerify(String eightcardid) {
int remaining = 0;
if (eightcardid.length() == 18) {
eightcardid = eightcardid.substring(0, 17);
}
if (eightcardid.length() == 17) {
int sum = 0;
for (int i = 0; i < 17; i++) {
String k = eightcardid.substring(i, i + 1);
ai = Integer.parseInt(k);
}
for (int i = 0; i < 17; i++) {
sum = sum + wi * ai;
}
remaining = sum % 11;
}
return remaining == 2 ? "X" : String.valueOf(vi[remaining]);
}
//15 update to 18
public String uptoeighteen(String fifteencardid) {
String eightcardid = fifteencardid.substring(0,6);
eightcardid = eightcardid + "19";
eightcardid = eightcardid + fifteencardid.substring(6,15);
eightcardid = eightcardid + getVerify(eightcardid);
return eightcardid;
}
}
测试代码:
使用的单元测试工具是junit
package org.yz21.study.idcard;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
public class IDCardTest extends TestCase {
private String idcard1 = "11010519491231002X";
private String idcard2 = "440524188001010014";
public void testVerify() {
IDCard idcard = new IDCard();
this.assertTrue(idcard.Verify(idcard1));
this.assertTrue(idcard.Verify(idcard2));
}
public static Test suite() {
return new TestSuite(IDCardTest.class);
}
public static void main(String[] args) {
junit.textui.TestRunner.run(suite());
}
}
发表评论
-
使用JQuery 简化Ajax 开发
2008-10-07 10:20 617jQuery 是什么? jQuery 由 John ... -
DTree的BUG解决方法
2008-12-25 15:33 984dtree.js的BUG当dtree条目的URL包括空格时,浏 ... -
JS常用正规表达式
2009-08-07 09:39 1172^ 匹配一个输入或一行 ... -
ajax缓存解决办法
2008-03-06 14:03 707有三种办法: 1、加个随机数 xmlHttp.open(&q ... -
基础的prototype.js常用函数及其用法
2008-03-06 15:49 672prototype.js 常用函数 : Element.t ... -
prototype源码中文说明
2008-03-06 15:57 640/** * 定义一个全局对 ... -
javascript replace方法与正则表达式
2008-03-13 17:52 674replace方法的语法是:str ... -
网页Tab选项卡实现
2008-06-28 19:58 779<style type="text/css&q ... -
网页中LRC歌词同步显示
2008-06-30 13:11 1073<html><head> < ... -
dojo之djConfig详解
2008-06-30 15:55 758djConfig是dojo内置的一个全局设置对象,其作用是可以 ... -
dojo验证函数
2008-06-30 16:04 804dojo提供了几乎全方位的验证函数,在使用下面的方法之前,要通 ... -
常用正则表达式
2008-06-30 16:19 666下面给出一些常用正则表达式: 1、 非负整数:”^d+$” ... -
dojo对象方法
2008-06-30 17:00 750这里所说的基础对象和 ... -
dojo之ValidationTextbox
2008-06-30 17:04 889功能强大的文本框:dijit.form.ValidationT ... -
dojo之IO和BrowserIO
2008-06-30 17:48 741模块:dojo.io.IO dojo.io.bind 处理请求 ... -
JavaScript中创建对象
2008-08-19 09:04 652注意以下两点:1、在对象的方法内调用其他方法时,别忘记了要加t ... -
AJAX实践DWR篇
2008-08-19 09:06 839DWR(Direct Web Remoting)是一个WEB远 ... -
FckEditor V2.6 fckconfig.js中文注释
2008-08-22 16:14 841FckEditor V2.6 fckconfig.js中文注释 ... -
FCKeditor使用详解
2008-08-22 16:36 747首先,FCKEDITOR的性能是非常好的,用户只需很少的时间 ... -
JS组件dtree轻松实现树型菜单
2008-09-19 14:19 1093这几天写个网站,用了一个JavaScript写的树型菜单,有网 ...
相关推荐
【C#身份证验证算法】 身份证验证是用于确认个人身份的重要工具,尤其是在中国,身份证号码是每个公民唯一的法定标识。在C#中实现身份证验证涉及到一系列的算法,这些算法需遵循中国的GB11643-1999标准。本文将深入...
一个身份证识别的算法,有具体的c语言实现,简洁明了,适合初学者
史上最强的身份证正则表达式!能验证身份证真伪!不是随便身份证就能通过,能验证和现实匹配一样的数据!
身份证验证算法是计算机编程中一个常见的实用功能,特别是在处理个人数据和进行实名认证的场景下。在Java中实现18位身份证格式验证涉及到多个步骤,主要包括:校验位计算、出生日期转换以及地区编码验证。下面将详细...
### C#身份证验证算法解析 #### 身份证结构 身份证号码在中国分为两种格式:15位和18位。 - **15位身份证**:由6位地区码、6位出生日期(YYMMDD)和3位顺序码组成。 - **18位身份证**:由6位地区码、8位出生日期...
总之,“身份证验证delphi窗口”项目是一个涉及Delphi编程、身份证验证算法实现以及GUI界面设计的综合实践。通过这个项目,开发者不仅可以掌握Delphi的基本用法,还能学习到如何处理实际生活中的数据验证问题。
7. **身份证验证算法**:在源码中,可能会包含如Luhn算法(也称为模10算法)来计算和验证校验码,或者使用特定的公式来检查地区码和出生日期的合理性。开发者可以通过源码理解这些验证步骤,并根据需要进行调整。 8...
在IT行业中,身份证验证器是一种常见的实用工具,主要用于验证个人身份证号码的合法性,并根据有效身份证号码解析出对应的身份信息,如出生日期、性别以及户籍所在地等。本项目以C#编程语言实现,提供了用户友好的...
本文将详细解析一个基于JavaScript的身份证验证算法,旨在帮助开发者理解和实现身份证号码的有效性检查。 #### 身份证号码结构 首先,了解身份证号码的结构是进行验证的基础。中国的身份证号码由18位数字组成,前...
本项目"身份证验证器.zip"是一个基于C#编程语言开发的身份信息验证工具,它旨在帮助开发者快速实现对中国大陆居民身份证号码的合法性和真实性的检查。下面我们将详细探讨这个工具的相关知识点。 1. **C#编程语言**:...
这是一个网页源码,身份证的验证。利用JavaScript制作的。
【身份证验证器】是一款用于身份证真伪查询的软件工具,主要功能是帮助用户验证中国居民身份证的合法性。在日常生活中,我们可能需要确认个人身份信息的真实性,例如在租房、招聘、网络交易等场合,该工具就能派上...
18位身份证号码验证算法.doc
### C#实现的18位身份证格式验证算法详解 身份证号码在中国大陆地区是个人身份的重要标识,由18位数字组成,其中包含了个人的出生日期、性别以及户籍所在地等信息。18位身份证号码遵循GB11643-1999标准,该标准在...
在IT行业中,身份证验证是常见的身份验证手段,尤其是在开发涉及个人信息的系统时,如会员注册、实名认证等。在Java Web开发中,使用JSP(JavaServer Pages)结合Java后端逻辑,我们可以实现对身份证合法性的有效...
总的来说,通过学习和理解这个易语言身份证信息验证源码,开发者不仅可以掌握身份证验证技术,还能进一步提高易语言编程能力,尤其是字符串处理、日期运算、逻辑判断和错误处理等方面的知识。这将对开发涉及个人身份...
我们将从以下几个方面进行深入分析:身份证号码的基本构成、验证算法、以及示例代码中的具体实现。 #### 二、身份证号码基本构成 中国的居民身份证号码由18位数字组成,分为四个部分: 1. **前六位**:表示编码...
身份证验证系统通常用于确认个人身份的合法性,它通过特定算法和数据库查询来验证身份证号码是否真实有效。Java作为编程语言,是实现这一系统的基础。 首先,身份证验证涉及到的是中国公民身份证号码的编码规则。...