工作笔记
public static void isIdCard(String idCard){
int interval = 120;
String cert = idCard;
if(idCard.length() == 15){
System.out.println("传入15位长度证件号:"+idCard);
cert = change15to18(idCard);
System.out.println("转换成18位长度证件号:"+cert);
}
if(cert.length()==18){
if((cert.indexOf("X")>0 && cert.indexOf("X")!=17)||(cert.indexOf("x")>0 && cert.indexOf("x")!=17)){
System.out.println("身份证格式错误");
return;
}
Calendar cal = Calendar.getInstance();
int sysY = cal.get(Calendar.YEAR);
int y = Integer.parseInt(cert.substring(6, 10));
if(y<(sysY-interval) || y>(sysY+interval)){
System.out.println("证件的年度非法");
return;
}
int m = Integer.parseInt(cert.substring(10,12));
if(m<=0 || m>12){
System.out.println("证件的月度非法");
return;
}
int d = Integer.parseInt(cert.substring(12, 14));
if(d<=0 || d>31){
System.out.println("证件的日度非法");
return;
}
if(cert.substring(17)=="x"||cert.substring(17)=="X"){
if(!getVerifyBit(cert).equalsIgnoreCase("x")){
System.out.println("证件非法,最后一位不为x");
}
return;
}else{
if(!cert.substring(17).equals(getVerifyBit(cert))){
System.out.println("证件非法,校验位不正确");
return;
}
}
System.out.println("证件合法");
}
}
//计算校验位(最后一位)
private static String getVerifyBit(String idCard){
int[] wi = new int[]{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
String[] vi = {"1","0","x","9","8","7","6","5","4","3","2"};
int[] ai = new int[idCard.length()];
idCard = idCard.substring(0,17);
for(int i=0;i<idCard.length();i++){
ai[i]= Integer.parseInt(idCard.substring(i, i+1));
}
int num = 0;
for(int i=0;i<17;i++){
num += ai[i]*wi[i];
}
int remaining = num % 11;
return remaining==2?"x":vi[remaining];
}
private static String change15to18(String idCard15){
String idCard = "";
idCard = idCard15.substring(0,6) + "19";
idCard = idCard+idCard15.substring(6, 15);
idCard = idCard + getVerifyBit(idCard);
return idCard;
}
分享到:
相关推荐
java身份证验证程序--可以用来做实验用
有基本基面,可验证身份证号码是否符合国家要求,可判断年龄、性别、籍贯等
java身份证号验证源代码
java实现的身份证验证...
JAVA身份证号码验证工具,通过身份证号码生成规则,能验证15位、18位身份证号码,必备验证方式
不完全验证身份证号码合法性,能够验证省份,但是因为信息收集不全,所以无法验证是哪个市,那个县等信息
java身份证验证代码实现,需要的朋友可以参考一下
主要介绍了Java身份证验证方法实例详解的相关资料,需要的朋友可以参考下
针对身份证号码的校验,以及能自动将身份证从15位升级为18位
正中的JAVA源代码程序!public static void main(String[] args) throws IOException{ //输入身份证号码 System.out.println("请输入一个身份证号码:"); BufferedReader br=new BufferedReader(new ...
身份证验证代码java,包括最后一位有效性的验证。身份证验证代码java,包括最后一位有效性的验证。
JAVA验证身份证号码校验码是否正确
java实现的18位身份证格式验证算法
最完善的身份证号码合法性校验Java算法,适合Android平台,可以直接拿来在项目中使用,正则表达式。
简单的Java身份证验证程序,包含15位和18位,验证了生日,性别和校验位,未验证地区码
Java详细验证身份证实例代码
自己用Java写的身份证验证系统,有背景图片的,输入身份证号可以判断真假,如果是有效身份证则返回所在省份,出生时间,性别。
JAVA身份证合法性校验,JAVA验证所有的身份证的合法性,
将身份证号码前面的17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。 将这17位数字和系数相乘的结果相加。 用加出来和除以11,取余数。 余数...
利用Java进行身份证正反面信息识别,使用了百度提供的库