身份证校验系统
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;}}。
贵州省级第二代居民身份证相片检测系统操作手册
贵州省级第二代居民身份证相片检测系统操作手册贵州省制证中心福建天创信息科技有限公司2013年8月第一章系统登录贵州省级第二代居民身份证相片检测系统登陆页面如下图所示:如上图所示,已注册用户在“用户登录”内填写登录用户名、密码、验证码,点击登陆。
登录成功后如下图所示:第二章照片上传照片上传模块,主要用于上传照片,检查上传照片是否合格。
基于2种不同的身份登陆系统时,有不同的检查机制。
1.在普通身份登陆系统时,照片上传模块只将照片上传后台进行人检。
2.在管理身份登录系统时,照片上传模块先要将上传照片进行机检,机检通过后,在后台系统插入一条数据,进行人检。
【注:照片上传这个模块操作之前需要后台先登录“贵州省级第二代居民身份证相片检测后台管理系统”页面,否则照片无法上传。
如图所示:】1. 普通身份,照片上传步骤:1.用普通身份登录相片检测系统后,点击系统菜单栏【照片上传】菜单,进入照片上传页面,页面如下图所示:2.点击“浏览”按钮弹出文件选择对话框,进入待上传照片所在目录,选中待上传的照片,点击“打开”上传选择的照片,照片上传成功后界面左边图象区将即时显示照片,同时需要选择人群类型,不选择的话一般默认人群类型为“普通群众”,如下图所示:【注:“人群类型”在浏览上传照片后进行选择,在照片“上传校验”该照片的人群类型不能再更改。
】3.上传校验。
照片上传成功后,输入验证码,继续点击“上传校验”按钮,然后提示在线等待后台人检结果,并且有60秒倒计时提示允许下一次照片上传的时间,如图所示:【注:离下一次上传时间60秒倒计时,60秒内不能上传下一张照片;如果该上传照片在60秒内在后台人检审核成功,则不必等60秒,可直接上传下一张照片,如图所示:】4.五分钟超时机制。
照片上传,点击校验后,5分钟内后台系统没有进行审核,超过5分钟,该照片被当做异常处理,数据发送返回前台“用户留言”,前台相检系统弹出提示框,如图所示:5.点击确定,返回照片上传页面,可立即重新开始上传下一张照片,如图所示:第三章照片查询照片查询模块,主要用于查看照片审核的详细情况,对合格通过的照片进行打印。
(整理)贵州省级第二代居民身份证相片检测系统操作手册.
贵州省级第二代居民身份证相片检测系统操作手册贵州省制证中心福建天创信息科技有限公司2013年8月第一章系统登录贵州省级第二代居民身份证相片检测系统登陆页面如下图所示:如上图所示,已注册用户在“用户登录”内填写登录用户名、密码、验证码,点击登陆。
登录成功后如下图所示:第二章照片上传照片上传模块,主要用于上传照片,检查上传照片是否合格。
基于2种不同的身份登陆系统时,有不同的检查机制。
1.在普通身份登陆系统时,照片上传模块只将照片上传后台进行人检。
2.在管理身份登录系统时,照片上传模块先要将上传照片进行机检,机检通过后,在后台系统插入一条数据,进行人检。
【注:照片上传这个模块操作之前需要后台先登录“贵州省级第二代居民身份证相片检测后台管理系统”页面,否则照片无法上传。
如图所示:】1. 普通身份,照片上传步骤:1.用普通身份登录相片检测系统后,点击系统菜单栏【照片上传】菜单,进入照片上传页面,页面如下图所示:2.点击“浏览”按钮弹出文件选择对话框,进入待上传照片所在目录,选中待上传的照片,点击“打开”上传选择的照片,照片上传成功后界面左边图象区将即时显示照片,同时需要选择人群类型,不选择的话一般默认人群类型为“普通群众”,如下图所示:【注:“人群类型”在浏览上传照片后进行选择,在照片“上传校验”该照片的人群类型不能再更改。
】3.上传校验。
照片上传成功后,输入验证码,继续点击“上传校验”按钮,然后提示在线等待后台人检结果,并且有60秒倒计时提示允许下一次照片上传的时间,如图所示:【注:离下一次上传时间60秒倒计时,60秒内不能上传下一张照片;如果该上传照片在60秒内在后台人检审核成功,则不必等60秒,可直接上传下一张照片,如图所示:】4.五分钟超时机制。
照片上传,点击校验后,5分钟内后台系统没有进行审核,超过5分钟,该照片被当做异常处理,数据发送返回前台“用户留言”,前台相检系统弹出提示框,如图所示:5.点击确定,返回照片上传页面,可立即重新开始上传下一张照片,如图所示:第三章照片查询照片查询模块,主要用于查看照片审核的详细情况,对合格通过的照片进行打印。
JS严格校验身份证号-(严格校验每一位身份号码)
JS严格校验⾝份证号-(严格校验每⼀位⾝份号码)html校验⽰例<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>JS严格校验⾝份证号</title></head><body><div align="center"></br></br></br></br></br></br></br></br><div class="form-inline"><input type="text"class="form-control" style="width: 200px;" id="idCard" placeholder="输⼊⾝份证号"><button class="btn btn-default" onclick="check();">校验</button></div></div><footer class="footer"><div class="container"><p class="text-muted" align="center">Author:<a href="" target="_blank">麦⽥技术博客</a></p></div></footer></body><script type="text/javascript">function check(){var idCard = document.getElementById("idCard").value;var flag =IdCardValidate(idCard);if(flag){alert("正确!");}else{alert("您输⼊的⾝份证号格式不正确 ");}}var Wi =[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1];// 加权因⼦var ValideCode =[1,0,10,9,8,7,6,5,4,3,2];// ⾝份证验证位值.10代表Xfunction IdCardValidate(idCard){idCard =trim(idCard.replace(/ /g,""));//去掉字符串头尾空格if(idCard.length ==15){return isValidityBrithBy15IdCard(idCard);//进⾏15位⾝份证的验证}else if(idCard.length ==18){var a_idCard = idCard.split("");// 得到⾝份证数组if(isValidityBrithBy18IdCard(idCard)&&isTrueValidateCodeBy18IdCard(a_idCard)){//进⾏18位⾝份证的基本验证和第18位的验证return true;}else{return false;}}else{return false;}}/*** 判断⾝份证号码为18位时最后的验证位是否正确* @param a_idCard ⾝份证号码数组* @return*/function isTrueValidateCodeBy18IdCard(a_idCard){function isTrueValidateCodeBy18IdCard(a_idCard){var sum =0;// 声明加权求和变量if(a_idCard[17].toLowerCase()=='x'){a_idCard[17]=10;// 将最后位为x的验证码替换为10⽅便后续操作}for(var i =0; i <17; i++){sum += Wi[i]* a_idCard[i];// 加权求和}valCodePosition = sum %11;// 得到验证码所位置if(a_idCard[17]== ValideCode[valCodePosition]){return true;}else{return false;}}/*** 验证18位数⾝份证号码中的⽣⽇是否是有效⽣⽇* @param idCard 18位书⾝份证字符串* @return*/function isValidityBrithBy18IdCard(idCard18){var year = idCard18.substring(6,10);var month = idCard18.substring(10,12);var day = idCard18.substring(12,14);var temp_date =new Date(year,parseFloat(month)-1,parseFloat(day)); // 这⾥⽤getFullYear()获取年份,避免千年⾍问题if(temp_date.getFullYear()!=parseFloat(year)||temp_date.getMonth()!=parseFloat(month)-1||temp_date.getDate()!=parseFloat(day)){return false;}else{return true;}}/*** 验证15位数⾝份证号码中的⽣⽇是否是有效⽣⽇* @param idCard15 15位书⾝份证字符串* @return*/function isValidityBrithBy15IdCard(idCard15){var year = idCard15.substring(6,8);var month = idCard15.substring(8,10);var day = idCard15.substring(10,12);var temp_date =new Date(year,parseFloat(month)-1,parseFloat(day)); // 对于⽼⾝份证中的你年龄则不需考虑千年⾍问题⽽使⽤getYear()⽅法if(temp_date.getYear()!=parseFloat(year)||temp_date.getMonth()!=parseFloat(month)-1||temp_date.getDate()!=parseFloat(day)){return false;}else{return true;}}//去掉字符串头尾空格function trim(str){return str.replace(/(^\s*)|(\s*$)/g,"");}</script></html>js校验核⼼代码引⼊只需要调⽤这个⽅法即可IdCardValidate(“你要验证的⾝份证”); function check(){var idCard = document.getElementById("idCard").value;var flag =IdCardValidate(idCard);var flag =IdCardValidate(idCard);if(flag){alert("正确!");}else{alert("您输⼊的⾝份证号格式不正确 ");}}var Wi =[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1];// 加权因⼦var ValideCode =[1,0,10,9,8,7,6,5,4,3,2];// ⾝份证验证位值.10代表Xfunction IdCardValidate(idCard){idCard =trim(idCard.replace(/ /g,""));//去掉字符串头尾空格if(idCard.length ==15){return isValidityBrithBy15IdCard(idCard);//进⾏15位⾝份证的验证}else if(idCard.length ==18){var a_idCard = idCard.split("");// 得到⾝份证数组if(isValidityBrithBy18IdCard(idCard)&&isTrueValidateCodeBy18IdCard(a_idCard)){//进⾏18位⾝份证的基本验证和第18位的验证return true;}else{return false;}}else{return false;}}/*** 判断⾝份证号码为18位时最后的验证位是否正确* @param a_idCard ⾝份证号码数组* @return*/function isTrueValidateCodeBy18IdCard(a_idCard){var sum =0;// 声明加权求和变量if(a_idCard[17].toLowerCase()=='x'){a_idCard[17]=10;// 将最后位为x的验证码替换为10⽅便后续操作}for(var i =0; i <17; i++){sum += Wi[i]* a_idCard[i];// 加权求和}valCodePosition = sum %11;// 得到验证码所位置if(a_idCard[17]== ValideCode[valCodePosition]){return true;}else{return false;}}/*** 验证18位数⾝份证号码中的⽣⽇是否是有效⽣⽇* @param idCard 18位书⾝份证字符串* @return*/function isValidityBrithBy18IdCard(idCard18){var year = idCard18.substring(6,10);var month = idCard18.substring(10,12);var day = idCard18.substring(12,14);var temp_date =new Date(year,parseFloat(month)-1,parseFloat(day));// 这⾥⽤getFullYear()获取年份,避免千年⾍问题if(temp_date.getFullYear()!=parseFloat(year)||temp_date.getMonth()!=parseFloat(month)-1||temp_date.getDate()!=parseFloat(day)){return false;}else{return true;}}/*** 验证15位数⾝份证号码中的⽣⽇是否是有效⽣⽇* @param idCard15 15位书⾝份证字符串* @return* @return*/function isValidityBrithBy15IdCard(idCard15){var year = idCard15.substring(6,8);var month = idCard15.substring(8,10);var day = idCard15.substring(10,12);var temp_date =new Date(year,parseFloat(month)-1,parseFloat(day));// 对于⽼⾝份证中的你年龄则不需考虑千年⾍问题⽽使⽤getYear()⽅法if(temp_date.getYear()!=parseFloat(year)||temp_date.getMonth()!=parseFloat(month)-1||temp_date.getDate()!=parseFloat(day)){return false;}else{return true;}}//去掉字符串头尾空格function trim(str){return str.replace(/(^\s*)|(\s*$)/g,"");}。
身份证有效性校验
生日期码(身份证第七位到第十四位)表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。例如:1981年05月11日就用19810511表示。
顺序码(身份证第十五位到十七位)为同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。其中第十七位奇数分给男性,偶数分给女性。
4、总费用与分项费用不等,必须重新生成。此功能之前是在卫统4季报时使用,而医管司是每天上传数据,看能不能提交审阅的时候自动重算,这样在各种报表上报的时候均不会受影响。
5、手术信息与手术补充信息无法关联,表结构问题造成验证无法进行
6、入院日期>手术开始时间<出院日期,手术开始时间>手术结束时间<出院日期,手术结束时间-手术开始时间不能大于24小时(或其他值)
7、出院日期如果可以更改,不能大于当前日期且不能小于入院日期
8、身份证有效性算法:
根据〖中华人民共和国国家标准 GB 11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
校验码(身份证最后一位)是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。
第十八位数字的计算方法为:
1.将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
1、当其它诊断编码为Z37或(年龄不足1周岁的)年龄[0.40]≤28天 或 入院日期-出生日期≤28天时,新生儿出生体重不能为空与新生儿入院体重不能为空
身份证校验正则
身份证校验正则
身份证校验正则:
1.号码的结构
公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。
排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
2.地址码
表示编码对象常住户口所在县(县级市、旗、区)的行政区划代码,按GB/T2260的规定执行。
3.出生日期码
表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。
4.顺序码
表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。
5.校验码
根据前面十七位数字码,按照ISO xxx:xxx.MOD 11-2校验码计算出来的检验码。
身份验证系统整体解决方案
国家教育考试标准化考场建设身份验证系统整体解决方案V3.0成都佳发安泰科技股份有限公司2016年1月目录一.建设背景 (3)1.1国家总体规划 (3)1.2现状和趋势 (3)1.3XX省(市、自治区)项目具体背景 (4)二.需求分析 (5)1.1总体需求 (5)1.1.1总体流程需求 (5)1.1.2总体功能需求 (6)三.推荐方案 (7)1.2现有各类验证系统 (7)1.3佳发身份验证系统的推出 (7)1.4系统实现原理 (9)1.5系统总体架构 (10)四.功能介绍 (13)1.1采集系统功能 (13)1.1.1基本功能 (13)1.1.2特色功能 (14)1.2验证系统功能 (15)1.2.1基本功能 (15)1.2.2特色功能 (17)1.3身份识别系统平台管理功能 (19)1.3.1基本功能 (19)1.3.2特色功能 (20)1.4Web客户端功能 (22)1.4.1基本功能 (22)1.4.2特色功能 (24)五.关键设备参数 (27)1.1便携式身份信息采集终端 (27)1.2考生身份信息验证服务器 (28)1.3手持式身份验证终端 (30)六.各级身份验证系统建设配置清单 (32)七.系统优势 (34)1.1系统设计优势 (34)1.1.1流程科学 (34)1.1.2架构合理 (34)1.1.3技术方案先进 (34)1.2技术应用上的优势 (35)1.2.1利用面颊比对技术,确保“人证合一” (35)1.2.2为带指纹的二代身份证推行留有接口 (35)1.2.3先进的照片处理技术 (35)1.3系统建设的优势 (37)1.4后期扩展的优势 (37)1.4.1推进电子考务建设 (37)1.4.2与已建标准化考点平台的融合 (37)1.4.3佳发考生身份验证系统对考务功能的响应 (38)八.场景式解决方案 (38)1.1标准化考场验证系统应用 (38)1.1.1系统原理 (38)1.1.2实施部署 (38)1.1.3应用介绍 (39)1.2北京身份验证系统应用 (42)1.2.1案例特点 (42)1.2.2系统原理 (43)1.2.3实施部署 (43)1.2.4应用介绍 (45)一.建设背景1.1国家总体规划国家教育考试制度是国家人才选拔的重要手段和方式,事关广大人民群众切身利益,社会关注度高,党中央、国务院对国家教育考试的安全工作十分重视。
使用javascript实现身份证校验与信息提取
使⽤javascript实现⾝份证校验与信息提取我们先了解⼀下⾝份证是怎么校验的:将前⾯的⾝份证号码17位数分别乘以不同的系数,将这17位数字和系数相乘的结果相加,然后除以11求余,根据最后的余数对应校验码,判断⾝份证是否符合要求。
现在我们开始写代码<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Insert title here</title></head><body><p>⾝份证号:<input type='text' id='idCard'/></p><P>出⽣⽇期:<input type='text' readonly id='age'/></P><P>性 别:<input type='radio' disabled name='sex' id='man'>男<input type='radio' name='sex' disabled id='woman'>⼥</P><P>籍 贯:<input type='text' readonly id='dess'></P><button type='button' id='btnSub'>确定</button><script src='js/jquery-1.11.3.min.js'></script><script>$("#btnSub").click(function(){var idCard = $("#idCard").val();//根据⾝份证不同的位置,截取相对应的数据var sex = idCard.substring(16,17);var num = idCard.substring(17,18);var year = idCard.substring(6,10);var month = idCard.substring(10,12);var day = idCard.substring(12,14);var age = year+"-"+month+"-"+day;var date = new Date(age);var sum = 0;var arr = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,0];var arr2 = [1,0,'X',9,8,7,6,5,4,3,2];//判断⾝份证是否为空,或者长度有没有达到要求(这⾥规定⾝份证18位)if(!(idCard && /^[\d]{18}$/.test(idCard))){alert("⾝份证输⼊格式不对!")return false;}else{//计算第18位数是否符合要求for(var i=0;i<18;i++){sum += idCard.substring(i,i+1)*arr[i]}if(num== arr2[sum%11] || num===arr2[sum%11]){ $("#age").val(age)if(sex%2 == 1){$("#man").prop("checked","true")}else{$("#woman").prop("checked","true")}$.ajax({url:"IdCardServlet",type:"get",data:{idCard:idCard},success:function(data){$.each(data,function(index,obj){$("#dess").val(obj.detail);})}})}else{alert("⾝份证输⼊格式不对!")$("#man").removeAttr("checked")$("#woman").removeAttr("checked")$("#dess").val("");$("#age").val("");return false;}}})</script></body></html>效果图:如果需要显⽰籍贯的话,需要那对应的数字去数据库中查找显⽰。
身份证号第18位校验xls
校验方法:在蓝色格中输入身份证号,黄色格中即自动计算出校验码。
校验码的计算方法(摘自百度百科):
1、将前面的身份证号码17位数分别乘以不同的系数。
从第一位到第十七位的系数分别为:7-9-10-5
2、将这17位数字和系数相乘的结果相加。
3、用加出来和除以11,看余数是多少?
4、余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。
其分别对应的最后一位身份证的号码
5、通过上面得知如果余数是2,就会在身份证的第18位数字上出现的是 X。
如果余数是10,身份证的最例如:某男性的身份证号码为【530102************】, 我们看看这个身份证是不是合法的身份证。
首先我们得出前17位的乘积和【(5*7)+(3*9)+(0*10)+(1*5)+(0*8)+(2*4)+(1*2)+(9*1)+(2*6)+(0*3)+(也就是说其余数是2。
最后通过对应规则就可以知道余数2对应的检验码是X。
所以,可以判定这是一个正
系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。
应的最后一位身份证的号码为1-0-X -9-8-7-6-5-4-3-2。
如果余数是10,身份证的最后一位号码就是罗马数字 2。
证是不是合法的身份证。
*2)+(9*1)+(2*6)+(0*3)+(0*7)+(5*9)+(0*10)+(8*5)+(0*8)+(1*4)+(1*2)】是189,然后用189除以11得出的结果是所以,可以判定这是一个正确的身份证号码。
除以11得出的结果是189/11=17----2,。
学籍数据中身份证号有效性校验的实现
学籍数据中身份证号有效性校验的实现
路华清;付超
【期刊名称】《今日科苑》
【年(卷),期】2008(000)020
【摘要】随着学历电子注册工作的日益规范,各高校在学历电子注册工作中,面临着大量学生身份证号有效性校验的问题,本文以vfp为基础,按照GB11643-1999规范编写程序代码,对身份证号进行错误筛查,以保证学历电子注册数据的准确性。
【总页数】2页(P216-217)
【作者】路华清;付超
【作者单位】荆楚理工学院教务处
【正文语种】中文
【中图分类】TP311.13
【相关文献】
1.在EXCEL中添加身份证号码校验功能 [J], 肖波
2.电大学籍管理工作中的身份证号信息研究 [J], 王杰;陈显强
3.MD5在数据库中实现数据完整性校验 [J], 张兴竹;钱林红
4.MIS系统中的身份证号码校验 [J], 向华
5.数据编辑界面中数据自动校验的设计与实现 [J], 熊小华;黄明和;宁爱兵
因版权原因,仅展示原文概要,查看原文内容请购买。