身份证验证算法由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“身份证号算法”。
import java.io.*;
import java.util.Date;
import java.util.Hashtable;
public cla 验证身份证 {
/*** 作者:cc* 功能:实现对身份证号码的验证* 日期:2012/04/11 星期三*//*********************************** 身份证验证开始 ****************************************/
/**
* 身份证号码验证
1、号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,* 八位数字出生日期码,三位数字顺序码和一位数字校验码。
2、地址码(前六位数)* 表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。
3、出生日期码(第七位至十四位)
* 表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。
4、顺序码(第十五位至十七位)
* 表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。
5、校验码(第十八位数)
*(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
*/
public static void main(String[] args)throws Exception {} InputStreamReader isr=new InputStreamReader(System.in);BufferedReader br=new BufferedReader(isr);System.out.println(“请输入身份证号码:”);String id=br.readLine();//从键盘输入身份证号码 System.out.println(IDCardValidate(id));
//验证身份证号码是否合法
public static String IDCardValidate(String IDStr){String errorInfo=“”;//记录错误信息
String []ValCode={“1”,“0”,“x”,“9”,“8”,“7”,“6”,“5”,“4”,“3”,“2”};//校验码 ==============================
//======================================End=========================================
//============================数字除最后一位都为数字================================
if(IDStr.length()==18)
Ai=IDStr.substring(0,17);if(IDStr.length()==15)Ai=IDStr.substring(0,6)+“19”+IDStr.substring(6,15);if(isNumeric(Ai)==false){//判断身份证号码除最后一位是否是全数字errorInfo=“身份证15位号码都应为数字;18位号码除最后一位外,都应为数字!”;} return errorInfo;
//======================================End=========================================
//=================================出生年月是否有效==================================
String strYear=Ai.substring(6,10);//年份
String strMonth=Ai.substring(10,12);//月份
//======================================End=========================================
//==============================地区码(身份证前六位)字段是否有效String strDate=Ai.substring(12,14);//日期 if(!isDate(strYear,strMonth,strDate)){errorInfo=“身份证号码中出生日期不在合法的范围内!”;} return errorInfo;
======================
Hashtable h=GetAreaCode();//获得地区码表
if(h.get(Ai.substring(0,2))==null){//判断身份证的地区编码是否合法,不合法为null
errorInfo=“身份证地区编码错误!”;
} return errorInfo;//======================================End========================//===============================判断最后一位是否是数字================= ==============================
int totalMulAiWi=0;//十七位本体码求和
//=======================================End=========================================
}//判断身份证中的出生日期是否合法 public static boolean isDate(String strYear,String strMonth,String strDate){boolean judge=false;Date dt=new Date();int year=Integer.parseInt(strYear);int month=Integer.parseInt(strMonth);int date=Integer.parseInt(strDate);if(year>=1900&&year
if(date>=1&&date=1&&month=1&&date=1&&date=1&&date=1&&date
}elsejudge=false;//月份超出范围 }else{judge=false;//年份超出范围 } return judge;} //检查身份证号码除最后一位是否是数字 public static boolean isNumeric(String Ai){for(int i=0;i='0'&&Ai.charAt(i)
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;}
}
全国公民身份证号码查询服务中心彩色影像扫描仪全国公民身份信息核查比对服务操作手册全国公民身份证号码查询服务中心2010年7月全国公民身份证号码查询服务中心目录1 功能......
/*-----------------* 函数名称:Boolean gf_check_identity(string as_identity)* 函数功能: 验证身份证号输入的正确性* 参数说明: stringas_identity身份证号* 返 回 值: True......
#include #pragma hdrstop#include "Unit1.h"//-------------#pragma package(smart_init)#pragma resource "*.dfm"TForm1 *Form1;//-------------__fastcall TForm1::......
如何验证身份证信息可以从以下几个方面去鉴别:1、看身份证编号:15位身份证编号的最后一位数字应该是男单女双,18位身份证编号的倒数第二位应该是男单女双,18位编号顺序从左到右......
公安部:身份证问题出在验证环节针对民众关心的“二代身份证先天缺陷”问题,技术专家和法律专家作出详细解释,称二代身份证在技术上是先进的,目前暴露出的问题不是在制证环节,而是......