iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >利用Java怎么实现一个验证身份证功能
  • 365
分享到

利用Java怎么实现一个验证身份证功能

javaava 2023-05-31 13:05:10 365人浏览 八月长安
摘要

这期内容当中小编将会给大家带来有关利用Java怎么实现一个验证身份证功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。具体如下:package org.cxy.csdn.example;import ja

这期内容当中小编将会给大家带来有关利用Java怎么实现一个验证身份证功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

具体如下:

package org.cxy.csdn.example;import java.util.Calendar;import java.util.HashMap;import java.util.Map;import javax.xml.bind.Validator;public class IdcardUtil { final static Map<Integer, String> zoneNum = new HashMap<Integer, String>(); static {  zoneNum.put(11, "北京");  zoneNum.put(12, "天津");  zoneNum.put(13, "河北");  zoneNum.put(14, "山西");  zoneNum.put(15, "内蒙古");  zoneNum.put(21, "辽宁");  zoneNum.put(22, "吉林");  zoneNum.put(23, "黑龙江");  zoneNum.put(31, "上海");  zoneNum.put(32, "江苏");  zoneNum.put(33, "浙江");  zoneNum.put(34, "安徽");  zoneNum.put(35, "福建");  zoneNum.put(36, "江西");  zoneNum.put(37, "山东");  zoneNum.put(41, "河南");  zoneNum.put(42, "湖北");  zoneNum.put(43, "湖南");  zoneNum.put(44, "广东");  zoneNum.put(45, "广西");  zoneNum.put(46, "海南");  zoneNum.put(50, "重庆");  zoneNum.put(51, "四川");  zoneNum.put(52, "贵州");  zoneNum.put(53, "云南");  zoneNum.put(54, "西藏");  zoneNum.put(61, "陕西");  zoneNum.put(62, "甘肃");  zoneNum.put(63, "青海");  zoneNum.put(64, "新疆");  zoneNum.put(71, "台湾");  zoneNum.put(81, "香港");  zoneNum.put(82, "澳门");  zoneNum.put(91, "外国"); } final static int[] PARITYBIT = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'}; final static int[] POWER_LIST = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10,  5, 8, 4, 2};  public static boolean isIdcard(String s){  if(s == null || (s.length() != 15 && s.length() != 18))   return false;  final char[] cs = s.toUpperCase().toCharArray();  //校验位数  int power = 0;  for(int i=0; i<cs.length; i++){   if(i==cs.length-1 && cs[i] == 'X')    break;//最后一位可以 是X或x   if(cs[i]<'0' || cs[i]>'9')    return false;   if(i < cs.length -1){    power += (cs[i] - '0') * POWER_LIST[i];   }  }  //校验区位码  if(!zoneNum.containsKey(Integer.valueOf(s.substring(0,2)))){   return false;  }  //校验年份  String year = s.length() == 15 &#63; "19" + s.substring(6,8) :s    .substring(6, 10);  final int iyear = Integer.parseInt(year);  if(iyear < 1900 || iyear > Calendar.getInstance().get(Calendar.YEAR))   return false;//1900年的PASS,超过今年的PASS  //校验月份  String month = s.length() == 15 &#63; s.substring(8, 10) : s.substring(10,12);  final int imonth = Integer.parseInt(month);  if(imonth <1 || imonth >12){   return false;  }  //校验天数  String day = s.length() ==15 &#63; s.substring(10, 12) : s.substring(12, 14);  final int iday = Integer.parseInt(day);  if(iday < 1 || iday > 31)   return false;  //校验一个合法的年月日  if(!validate(iyear, imonth, iday))   return false;  //校验"校验码"  if(s.length() == 15)   return true;  return cs[cs.length -1 ] == PARITYBIT[power % 11]; } static boolean validate(int year, int imonth, int iday){  //比如考虑闰月,大小月等  return true; } public static void main(String[] args) {  for(int i=0;i<10;i++){   final String s = "41102419871001001111111"+i;   System.out.println(s+" --> "+isIdcard(s));  } }}

--结束END--

本文标题: 利用Java怎么实现一个验证身份证功能

本文链接: https://www.lsjlt.com/news/225786.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作