居民身份证号码校验工具

合集下载

身份证阅读器

身份证阅读器

2011-12-24
神思身份证阅读器
型号: 型号:SS628-100U 型号: 型号:SS628-300C
型号:SS628-500 型号
2011-12-24
神思SS628-100U硬件优势
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 外形美观、体积最小(射频设备体积越小,设计制造技术越高)、重量轻; 采用防磨喷涂技术,刷卡摩擦1万次,不脱落; 自带蜂鸣器,读卡后自动蜂鸣提示,无需计算机外加音箱提示; 功耗低,可以通过USB接口取电工作,减少外接电源适配器; 接口丰富:有USB、RS232C(缺省波特率115200bps)两种通讯方式; 任意角度读卡:采用射频磁场导向技术,0~90度都可读卡; 居民身份证阅读距离大于5cm,无盲区,对四种芯片的身份证卡兼容性好; 灵敏度好:从读卡到显示信息的时间小于1秒; 工作状态显示:设备上有相应的电源指示和读卡状态指示; 产品具有掉电、过流、过压、短路等保护措施; 可与专用接口设备实现无缝连接; 通用性强:全面支持WINDOWS98以上版本的操作系统; 开放性好:提供完善的SDK软件包供系统集成商进行二次开发,支持 VC/DELPHI/VB/PB等开发平台。 14. 稳定性能好:应用专用测试设备,在一个半月时间,24小时不间断运行,读 卡100万次,读卡出错率为0
2011-12-24
名称
神思SS628-100U 神思
神思软件读卡界面
2011-12-24
数据查询界面
2011-12-24
新中新DKQ-116D
新中新DKQ-116D身份证阅读器采用国际上先进的 TypeB非接触式IC卡阅读技术,通过内嵌的专用身 份证安全控制模块,以无线传输方式与第二代居民 身份证内的芯片进行安全认证后,将芯片中的个人 信息读出,并通过计算机通讯接口和安装在计算机 中的阅读软件,将个人信息和相片进行显示和存储 等操作。

如何利用VisualBasic开发身份证号码批量验证工具软件

如何利用VisualBasic开发身份证号码批量验证工具软件

如何利用VisualBasic开发身份证号码批量验证工具软件导读:本文如何利用VisualBasic开发身份证号码批量验证工具软件,仅供参考,如果觉得很不错,欢迎点评和分享。

如何利用Visual Basic开发身份证号码批量验证工具软件作者/刘小龙通过对身份证号码实际应用中存在的问题进行详细分析,我们发现每学年的学籍建档、国家助学金申报等方面都离不开身份证号码。

同时,人工核对信息工作量大,也易出错,势必对工作造成一定的影响。

为此,我们运用大学学习的一些VB知识,根据身份证号码编码规则编写了《身份证号码批量验证工具》软件,使身份证号码核对工作变得简单、轻松。

一、软件的设计步骤二、软件详细设计1. 解决方案与软件特色本程序使用VB在Windows XP环境开发,解决了身份证号码验证过程中存在的易出错、工作量大的问题,支持Excel文件批量验证及信息追加,绿色免安装、小巧、实用性强。

2. 具体设计下面就根据软件的操作流程图进行介绍软件的功能和实现原理:(1)操作流程图。

参数设置说明:身份证号码、性别、出生年月所在列均以阿拉伯数字表示,性别、出生年月信息的追加属于选择项。

(2)身份证号码校验值计算函数代码。

Public Function sfzjym(num As String)As StringDim n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12,n13,n14,n15,n16,n17,y,s As Integern1=Val(Mid$(num,1,1))*7n2=Val(Mid$(num,2,1))*9n3=Val(Mid$(num,3,1))*10n4=Val(Mid$(num,4,1))*5n5=Val(Mid$(num,5,1))*8n6=Val(Mid$(num,6,1))*4n7=Val(Mid$(num,7,1))*2n8=Val(Mid$(num,8,1))*1n9=Val(Mid$(num,9,1))*6n10=Val(Mid$(num,10,1))*3n11=Val(Mid$(num,11,1))*7n12=Val(Mid$(num,12,1))*9n13=Val(Mid$(num,13,1))*10n14=Val(Mid$(num,14,1))*5n15=Val(Mid$(num,15,1))*8n16=Val(Mid$(num,16,1))*4n17=Val(Mid$(num,17,1))*2y=n1+n2+n3+n4+n5+n6+n7+n8+n9+n10+n11+n12+n13+n 14+n15+n16+n17s=y Mod 11Select CasesCase 0sfzjym=“1”Case 1sfzjym=“0”Case 2sfzjym=“X”Case 3sfzjym=“9”Case 4sfzjym=“8”Case 5sfzjym=“7”Case 6sfzjym=“6”Case 7sfzjym=“5”Case 8sfzjym=“4”Case 9sfzjym=“3”Case 10sfzjym=“2”End SelectEnd Function函数参数为18位身份证号码,返回值为身份证号码的校验值,即身份证号码最后一位,整个计算过程严格按照GB11643-1999 《公民身份号码》中的规定完成。

神思身份证阅读器使用说明

神思身份证阅读器使用说明

神思身份证阅读器使用说明身份证阅读器热销品牌-神思SS628-100,生产商是山东神思电子技术有限公司。

是由归国留学人员领班的民营科技企业,注册资金为5000万元。

其公司生产的产品包括通信终端、识别终端、支付终端等嵌入式软件。

能从数百家企业投标会中脱颖而出成为生产身份证阅读器的“十大厂家”,实属不易。

神思公司潜心在嵌入式软件领域研发,专注认证识别技术,经过过年的积累,在智能识别终端领域,拥有了包括S-7嵌入式操作系统在内的一系列具有自主知识产权的专有技术。

神思SS628-100身份证阅读器就是其代表作品,可以快速读取、验证、上传或存档二代证IC卡内信息。

产品结构设计简单、坚固,方便易用,性能稳定,适合长期连续工作的使用环境;产品采用RS232或USB接口,安装简单,并可利用USB接口供电,无需外接电源适配器。

深圳研腾科技有限公司销售的神思SS628(100U)身份证阅读器以其美观新颖的外形、稳定的质量赢得全国用户的好评。

神思公司是全标准一次性通过公安部检测的唯一机具生产厂家。

在公安部组织的可追加地址型机具招标中,神思又以优异成绩中标,成为具备读写身份证机具生产资质的三家之一。

公司进行的连续测试中,不间断读卡100万次以上无差错。

迄今为止,神思验证机具开箱合格率达100%,故障率<5‰。

产品特性神思SS628系列二代证验证(阅读)机具拥有自主知识产权,可以快速读取、验证、上传或存档二代证IC卡内信息。

产品结构设计简单、坚固,方便易用,性能稳定,适合长期连续工作的使用环境;产品采用RS232或USB接口,安装简单,并可利用USB接口供电,无需外接电源适配器。

产品采用了基于SAM(安全模块)的加密安全机制,通过神思公司自主知识产权的RF卡读写模块,可对二代证快速解密验证与阅读存档。

软件提供多平台开发函数库,便于用户二次开发和应用。

适用于公安、金融、电信、邮政、教育、民政、旅居、保险、娱乐等多种需要身份验证的行业,可实现客户身份认证、客户信息自动录入,完善客户档案,提高服务质量与工作效率。

JAVA校验身份证号码工具类(支持15位和18位)

JAVA校验身份证号码工具类(支持15位和18位)

JAVA校验⾝份证号码⼯具类(⽀持15位和18位)JAVA 校验⾝份证号码⼯具类(⽀持15位和18位)import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.GregorianCalendar;import java.util.Hashtable;import java.util.regex.Matcher;import java.util.regex.Pattern;/*** TODO* ⾝份证校验⼯具类*/public class IDCardUtil {/*校验规则:如果为15位,只能是15位数字;前两位满⾜省/直辖市的⾏政区划代码。

如果为18位,允许为18位数字,如出现字母只能在最后⼀位,且仅能为“X”;18位中包含年⽉的字段满⾜⽇期的构成规则;前两位满⾜省/直辖市的⾏政区划代码;最后⼀位校验位满⾜⾝份证的校验规则(⾝份证校验规则见附录)。

附录:⾝份证校验规则公民⾝份证号码校验公式为RESULT = ∑( A[i] * W[i] ) mod 11。

其中,i表⽰号码字符从右⾄左包括校验码在内的位置序号;A[i]表⽰第I位置上的数字的数值;W[i]表⽰第i位置上的加权因⼦,其值如下:i 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2W[i] 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2RESULT 0 1 2 3 4 5 6 7 8 9 10校验码A[1] 1 0 X 9 8 7 6 5 4 3 2*/public static boolean idCardValidate(String idCard) {String[] valCodeArr = {"1", "0", "x", "9", "8", "7", "6", "5", "4", "3", "2"};String[] wi = {"7", "9", "10", "5", "8", "4", "2", "1", "6", "3", "7", "9", "10", "5", "8", "4", "2"};String ai = "";String ai1 = "";String ai2 = "";// 号码的长度 15位或18位if (idCard.length() != 15 && idCard.length() != 18) {return false;}// 数字除最后以为都为数字if (idCard.length() == 18) {ai = idCard.substring(0, 17);} else if (idCard.length() == 15) {ai = idCard.substring(0, 6) + "19" + idCard.substring(6, 15);}if (!isNumeric(ai)) {return false;}// 出⽣年⽉是否有效String strYear = ai.substring(6, 10); // 年份String strMonth = ai.substring(10, 12); // ⽉份String strDay = ai.substring(12, 14); // ⽉份if (!isDataFormat(strYear + "-" + strMonth + "-" + strDay)) {return false;}GregorianCalendar gc = new GregorianCalendar();SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");try {if ((gc.get(Calendar.YEAR) - Integer.parseInt(strYear)) > 150|| (gc.getTime().getTime() - s.parse(strYear + "-" + strMonth + "-" + strDay).getTime()) < 0) {return false;}} catch (Exception e) {e.printStackTrace();}if (Integer.parseInt(strMonth) > 12 || Integer.parseInt(strMonth) == 0) {return false;}if (Integer.parseInt(strDay) > 31 || Integer.parseInt(strDay) == 0) {return false;}// 地区码是否有效Hashtable h = getAreaCode();if (h.get(ai.substring(0, 2)) == null) {return false;}// 判断最后⼀位的值int totalmulAiWi = 0;for (int i = 0; i < 17; i++) {totalmulAiWi = totalmulAiWi + Integer.parseInt(String.valueOf(ai.charAt(i))) * Integer.parseInt(wi[i]);}int modValue = totalmulAiWi % 11;String strVerifyCode = valCodeArr[modValue];ai1 = ai + strVerifyCode.toUpperCase();ai2 = ai + strVerifyCode.toLowerCase();if (idCard.length() == 18) {if (!ai1.equals(idCard) && !ai2.equals(idCard)) {return false;}}return true;}private static boolean isNumeric(String str) {Pattern pattern = pile("[0-9]*");Matcher isNum = pattern.matcher(str);if (isNum.matches()) {return true;}return false;}private static boolean isDataFormat(String str) {boolean flag = false;String regxStr = "^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([135 Pattern pattern1 = pile(regxStr);Matcher isNo = pattern1.matcher(str);if (isNo.matches()) {flag = true;}return flag;}private static Hashtable getAreaCode() { Hashtable hashtable = new Hashtable(); hashtable.put("11", "北京");hashtable.put("12", "天津");hashtable.put("13", "河北");hashtable.put("14", "⼭西");hashtable.put("15", "内蒙古");hashtable.put("21", "辽宁");hashtable.put("22", "吉林");hashtable.put("23", "⿊龙江");hashtable.put("31", "上海");hashtable.put("32", "江苏");hashtable.put("33", "浙江");hashtable.put("34", "安徽");hashtable.put("35", "福建");hashtable.put("36", "江西");hashtable.put("37", "⼭东");hashtable.put("41", "河南");hashtable.put("42", "湖北");hashtable.put("43", "湖南");hashtable.put("44", "⼴东");hashtable.put("45", "⼴西");hashtable.put("46", "海南");hashtable.put("50", "重庆");hashtable.put("51", "四川");hashtable.put("52", "贵州");hashtable.put("53", "云南");hashtable.put("54", "西藏");hashtable.put("61", "陕西");hashtable.put("62", "⽢肃");hashtable.put("63", "青海");hashtable.put("64", "宁夏");hashtable.put("65", "新疆");hashtable.put("71", "台湾");hashtable.put("81", "⾹港");hashtable.put("82", "澳门");hashtable.put("91", "国外");return hashtable;}}。

身份证数字校验码计算公式

身份证数字校验码计算公式

身份证数字校验码计算公式在中国,每个人的身份证号码都是唯一的,其中包括了个人的基本信息和校验码。

校验码是身份证号码中的最后一位数字,它是根据身份证号码的前17位数字计算而得到的。

校验码的存在可以帮助验证身份证号码的有效性,防止错误或伪造的身份证号码的使用。

那么,身份证数字校验码是如何计算的呢?首先,我们需要了解身份证号码的结构。

中国的身份证号码共有18位数字,其中前17位是个人的基本信息,包括地区、出生年月日和顺序码,最后一位是校验码。

校验码的计算是通过对前17位数字进行一系列的运算得到的。

校验码的计算公式如下:1. 将身份证号码的前17位数字分别乘以对应的加权因子,然后将乘积相加。

2. 将上一步得到的结果除以11,得到余数。

3. 根据余数在一个预先设定的对照表中找到对应的校验码。

下面我们来详细解释一下这个计算公式。

首先,加权因子是一个固定的数组,分别为,7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2。

这些数字分别对应身份证号码的前17位数字,用来进行加权计算。

接下来,我们将身份证号码的前17位数字分别乘以对应的加权因子,然后将乘积相加。

假设一个身份证号码的前17位数字分别为a1、a2、a3...a17,对应的加权因子分别为w1、w2、w3...w17,那么校验码的计算公式可以表示为:S = a1w1 + a2w2 + a3w3 + ... + a17w17。

其中S表示加权计算的结果。

然后,我们将S除以11,得到余数M。

余数M的取值范围为0到10。

最后,我们根据余数M在一个对照表中找到对应的校验码。

对照表如下:0,1。

1,0。

2,X。

3,9。

4,8。

5,7。

6,6。

7,5。

8,4。

9,3。

10,2。

根据上述对照表,我们可以找到对应余数M的校验码。

通过以上的计算公式,我们可以得到身份证号码的校验码。

这个计算过程可以帮助我们验证身份证号码的有效性,防止错误或伪造的身份证号码的使用。

检验身份证号码的正确性

检验身份证号码的正确性

检验身份证号码的正确性=IF(LEN(A2)=18,MID("10X98765432",MOD(SUMPRODUCT(MID(A2,ROW(INDIRECT("1:1 7")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1)=RIGHT(A2),IF(LEN(A2)=15,ISNUMBER(--TEXT(19&MID(A2,7,6),"#-00-00"))))EXCEL中如何提取身份证出生日期、性别、检验身份证号码的正确性中国居民身份证号码是一组特征组合码,原为15位,现升级为18位,其编码规则为:15位:6位数字常住户口所在县市的行政区划代码,6位数字出生日期代码,3位数字顺序码。

18位:6位数字常住户口所在县市的行政区划代码,8位数字出生日期代码,3位数字顺序码和1位检验码。

其中3位数字顺序码,是为同一地址码的同年同月同日出生人员编制的顺序号,偶数的为女性,奇数的为男性。

1、提取籍贯地区的行政区划代码(A2为身份证号,下同)15与18位通用:=LEFT(A2,6)如果有一个编码和省份地区的对照表,可以用VLOOKUP函数来提取地区信息。

2、提取出生日期信息15位:=--TEXT(19&MID(A2,7,6),"#-00-00")18位:=--TEXT(MID(A2,7,8),"#-00-00")15与18位通用:=--TEXT(IF(LEN(A2)=15,19,"")&MID(A2,7,6+IF(LEN(A2)=18,2,0)),"#-00-00") 简化公式:=--TEXT((LEN(A2)=15)*19&MID(A2,7,6+(LEN(A2)=18)*2),"#-00-00")(请将输入公式的单元格格式设置为日期格式)3、提取性别信息15位:=IF(MOD(RIGHT(A2),2)=1,"男","女")18位:=IF(MOD(MID(A2),17,1)=1,"男","女")15与18位通用:=IF(MOD(MID(A2,IF(LEN(A2)=15,15,17),1),2)=1,"男","女")简化公式:=IF(MOD(RIGHT(LEFT(A2,17)),2),"男","女")4、检验身份证号码的正确性18位身份证号码的最后一位是检验码,它是根据身份证前17位数字依照规则计算出来的,其值0~9或X。

中国居民居住证号码验证工具--开源

中国居民居住证号码验证工具--开源

中国居民居住证号码验证⼯具--开源IdValidator.php()中华⼈民共和国居民⾝份证、中华⼈民共和国港澳居民居住证以及中华⼈民共和国台湾居民居住证号码验证⼯具(PHP Composer 版)⽀持15 位与 18 位号码。

安装composer require "jxlwqq/id-validator"注:如果 require 失败,解决⽅案见。

使⽤440308************和610104*********⽰例⼤陆居民⾝份证均为随机⽣成的假数据,如撞车,请联系删除。

810000************和830000199201300022⽰例港澳台居民居住证为北京市公安局公布的居住证样式号码。

验证⾝份证号合法性验证⾝份证号是否合法,合法返回true,不合法返回false:use Jxlwqq\IdValidator\IdValidator;$idValidator = new IdValidator();$idValidator->isValid('440308************'); // ⼤陆居民⾝份证 18 位$idValidator->isValid('610104*********'); // ⼤陆居民⾝份证 15 位$idValidator->isValid('810000************'); // 港澳居民居住证 18 位$idValidator->isValid('830000199201300022'); // 台湾居民居住证 18 位获取⾝份证号信息当⾝份证号合法时,返回分析信息(地区、出⽣⽇期、星座、⽣肖、性别、校验位),不合法返回false:use Jxlwqq\IdValidator\IdValidator;$idValidator = new IdValidator();$idValidator->getInfo('440308************'); // 18 位$idValidator->getInfo('610104*********'); // 15 位返回信息格式如下:['addressCode' => '440308', // 地址码'abandoned' => 0, // 地址码是否废弃,1 为废弃的,0 为正在使⽤的'address' => '⼴东省深圳市盐⽥区', // 地址'addressTree' => ['⼴东省', '深圳市', '盐⽥区'] // 省市区三级列表'birthdayCode' => '1999-01-10', // 出⽣⽇期'constellation' => '⽔瓶座', // 星座'chineseZodiac' => '卯兔', // ⽣肖'sex' => 1, // 性别,1 为男性,0 为⼥性'length' => 18, // 号码长度'checkBit' => '2', // 校验码]注:判断地址码是否废弃的依据是,本数据集的采集源来⾃:,每年更新⼀次。

Excel中检测输入的身份证号码是否合法函数校验方法大揭秘

Excel中检测输入的身份证号码是否合法函数校验方法大揭秘

Excel中检测输⼊的⾝份证号码是否合法函数校验⽅法⼤揭秘什么时候需要校验⾝份证号码合法性呢?1.防⽌输⼊⼈员随⼿输⼊⼀个18位数字冒充⾝份证号码2.防⽌输⼊⼿误,有时候并⾮故意输错注意本⽅法⽆法检测⾝份证是否真实存在,只能从格式上检查号码是否合法⾝份证号码校验基本原理第1步:把号码的前17位分别乘以不同的系数,系数表如下第2步:把17位数字和系数相乘的结果相加,加和值再除以11,取其余数。

⽤得到的余数与⾝份证第18位号码进⾏对照,余数与⾝份证号码第18位对应关系如下表例如:某男⼠的⾝份证号码是622924************。

⾸先我们得出前17位与系数的乘积和是320,除以11的余数是1,对应第18位数是0。

所以这是⼀个不合法的⾝份证号码。

判断⾝份证号码是否合法的函数公式计算第18位数=IF(LEN($C2)=18,MID("10X98765432",MOD(SUMPRODUCT(VALUE(MID($C2,ROW($1:$17),1)),$B$2:$B$18),11)+1,1),"长度错误")判断是否合法=IF(LEN($C2)=18,IF(MID("10X98765432",MOD(SUMPRODUCT(VALUE(MID($C2,ROW($1:$17),1)),$B$2:$B$18),11)+1,1)=RIGHT($C2,1),"合法","不合法"),"长度错误")其中,C2为⾝份证号码,$B$2:$B$18为第1到17个系数。

这个⼀般存到另⼀个sheet⾥或者顶⼀个名称,与实际使⽤的表分开函数分步讲解VALUE(MID($C2,ROW($1:$17),1))ROW函数返回⼀个1到17的数组,配个mid函数依次取出C2号码中前17个数字,并将截取的⽂本⽤value转换为数值SUMPRODUCT(VALUE(MID($C2,ROW($1:$17),1)),$B$2:$B$18),11)⽤SUMPRODUCT函数返回MID($C2,ROW($1:$17),1)数组和$B$2:$B$18(校验表)区域对应相乘的和MOD(SUMPRODUCT(VALUE(MID($C2,ROW($1:$17),1)),$B$2:$B$18),11)⽤mod对上⼀步求乘积之取11的余数MID("10X98765432",MOD(SUMPRODUCT(VALUE(MID($C2,ROW($1:$17),1)),$B$2:$B$18),11)+1,1)⽤MID函数截取10X98765432中的1位数,即⾝份证号码的第18位。

第二代居民身份证核验软件使用说明书

第二代居民身份证核验软件使用说明书

第二代居民身份证核验软件使用说明书北京中盾安全技术开发公司2006年04月第二代居民身份证核验软件使用手册版本1.1.0出版日期2006年04月著作权注意事项本书版权为北京中盾安全技术开发公司和其设计开发单位公安部第一研究所共同所有。

未经北京中盾安全技术开发公司和公安部第一研究所书面同意,任何公司、单位或个人,不得用任何手段复制本手册的部分或全部内容。

对印刷错误的更正,所述信息谬误的勘误,以及产品的改进,均由北京中盾安全技术开发公司和公安部第一研究所随时作出解释,恕不预先通知,修正内容将编入再版说明书中。

商标所有在本手册使用的商标为该商标所有人的资产。

联系方式北京中盾安全技术开发公司地址:北京市海淀区首体南路1号邮编:100044电话:************,88513407,88513320(销售)************,88513557(售后服务)************,88513509(技术支持)8008105680(投诉电话)北京中盾安全技术开发公司一.系统安装将随机光盘放入PC机的光驱,运行光盘“第二代居民身份证核验软件”文件夹下的“setup.exe”,画面显示如图1-1所示。

图1-1点击“下一步”按钮,显示图1-2如示。

图1-2默认的安装路径是c:\program files,若不想更改目录,点击“下一步”按钮进入图1-4界面。

否则修改安装目录,点击“浏览”按钮,进入图1-3所示界面。

图1-3选择安装路径后,点击“确定”按钮返回到图1-2界面。

点击“下一步”按钮,进入图1-4界面。

图1-4点击“下一步”按钮,系统正在安装,直到显示图1-5所示时点击“完成”按钮系统安装完毕。

图1-5二.启动当软件正常安装完成,在桌面双击”第二代身份证核验软件”快捷方式、或点击开始菜单中——>程序——>第二代身份证核验软件——>”第二代身份证核验软件”进入程序的读卡界面,如图2-1所示。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档