当前位置: 首页 > news >正文

织梦网站导航浮动确定网站风格

织梦网站导航浮动,确定网站风格,crm厂商排名,营销策划公司 品牌策划公司文章目录 身份证简介#xff08;一#xff09;身份证号码的组成#xff08;二#xff09;一代和二代身份证一代身份证二代身份证 检验思路分析#xff08;一#xff09;15位身份证号码#xff08;二#xff09;18位身份证号码#xff08;三#xff09;校验算法示例一身份证号码的组成二一代和二代身份证一代身份证二代身份证 检验思路分析一15位身份证号码二18位身份证号码三校验算法示例18位 编写代码一创建工具类IdentityUtils二创建isLegalIdCard方法三创建is15BitLegalIdCard方法四创建is18BitLegalIdCard方法五创建convert15To18BitIdCard方法六创建测试类 运行测试 身份证简介 身份证校验是指通过一定规则和算法对身份证号码进行真实性核验的过程主要是为了确保个人身份信息的准确性和安全性。 一身份证号码的组成 我国公民身份证号码一般为18位由以下四部分组成 地址码前6位数字表示编码对象常住户口所在县市、旗、区的行政区划代码。出生日期码接下来的8位数字表示编码对象出生的年、月、日其中年份用四位数字表示年、月、日之间不用分隔符。顺序码第15至17位数字表示在同一地址码所标识的区域范围内对同年、同月、同日出生的人员编定的顺序号。顺序码的奇数分给男性偶数分给女性。校验码最后一位数字是根据前面十七位数字码按照ISO 7064:1983标准的MOD 11-2校验算法计算得出的检验码。 二一代和二代身份证 一代身份证 发布时间与停用时间 发布时间1984年。停用时间2013年1月1日。 外观与规格 采用聚酯薄膜密封、单页卡式设计。尺寸为特定规格但具体尺寸未明确提及与二代证不同。15位编码。 制作技术与防伪措施 最初采用印刷和照相翻拍技术塑封而成。防伪性能相对较差比较容易被伪造。1995年7月1日起启用新的防伪居民身份证采用全息透视塑封套防伪技术。 信息内容 包括姓名、性别、民族、出生日期、常住户口所在地住址等基本信息。最初发放的身份证中有一部分是用手工填写的。不包含“婚姻状况”和“职业”等内容。 有效性与使用范围 在有效期内继续有效但自2013年起停止使用。用于常住户口登记项目变更、兵役登记、婚姻登记、收养登记、申请办理出境手续等场合。 二代身份证 发布时间与换发时间 发布并实施时间依据2003年6月28日通过的《中华人民共和国居民身份证法》。换发时间自2004年1月1日起开始换发。 外观与规格 采用多层聚酯材料复合而成的单页卡式设计。尺寸为85.6mm×54.0mm×1.0mm四角为圆角。正面印有国徽、证件名称、长城图案、签发机关和有效期以及彩虹扭索花纹背面印有姓名、性别、民族、出生日期、常住户口所在地住址、公民身份号码和本人相片。 制作技术与防伪措施 采用非接触式IC卡技术制作具备视读和机读两种功能。芯片存储量大信息可划分安全等级并分区存储。表面采用防伪膜和多项印刷防伪技术如彩虹印刷、荧光印刷、定向光变色膜等。 信息内容 包含姓名、性别、民族、出生日期、常住户口所在地住址、公民身份号码等基本信息。公民身份号码为18位其中前6位为地区码中间8位为出生年月日后3位为顺序码最后1位为校验码。 有效性与使用范围 按年龄区域划分使用期限未满16周岁为5年16至25周岁为10年26至45周岁为20年46周岁以上为长期有效。用于各类需要身份验证的场合如银行、机场、酒店等。在公安、社保、医疗等领域自动采集和录入相关数据提高工作效率和准确性。 检验思路分析 15位和18位身份证的检验思路分析主要涉及到身份证号码的组成规则以及校验方法的了解。以下是对两者的详细检验思路 一15位身份证号码 格式检查 确认身份证号码长度为15位。检查每一位是否都是数字。 组成规则分析 前6位地区编码表示身份证持有人的户籍所在地。第7-8位出生年份的后两位。第9-10位出生月份。第11-12位出生日期。第13-14位顺序码为随机数用于区分同年同月同日出生的不同个体。第15位性别码奇数为男性偶数为女性。 校验内容 年份检查年份是否在合理范围内如1900-1999年的后两位。月份检查月份是否在01-12之间。日期检查日期是否在01-31之间注意不同月份的天数差异。性别根据第15位判断性别是否符合奇数为男、偶数为女的规则。 二18位身份证号码 格式检查 确认身份证号码长度为18位。检查前17位是否都是数字最后一位可以是数字或字母X代表10。 组成规则分析 前6位地区编码表示身份证持有人的户籍所在地。第7-14位出生年月日完整的8位数字格式为YYYYMMDD。第15-17位顺序码其中第17位还用于表示性别奇数为男性偶数为女性。第18位校验码根据前17位数字通过特定算法计算得出。 校验内容 地区码需与全国行政区划代码一致可通过查询最新的行政区划代码表进行验证。出生日期需符合日期格式YYYYMMDD且年份应在合理范围内如当前年份的前几十年至建国初期。顺序码第17位需根据性别规则进行校验奇数表示男性偶数表示女性。校验码按照特定算法计算前17位的加权和取模后得到余数再根据余数在校验码对照表中查找对应的校验码。如果计算出的校验码与身份证号码中的第18位一致则校验通过否则校验不通过。 三校验算法示例18位 将前17位数字分别乘以对应的加权因子7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2。将乘积相加得到总和。将总和除以11得到余数。根据余数在校验码对照表1, 0, X, 9, 8, 7, 6, 5, 4, 3, 2中查找对应的校验码。 编写代码 一创建工具类IdentityUtils public class IdentityUtils { // 权重因子 private static final int[] COEFFICIENT_ARRAY {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2}; // 校验码字符集 private static final String[] IDENTITY_MANTISSA {1, 0, X, 9, 8, 7, 6, 5, 4, 3, 2}; // 15位身份证正则表达式 private static final String IDENTITY_PATTERN_15 ^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0-2]\\d)|3[0-1])\\d{3}$; // 18位身份证正则表达式 private static final String IDENTITY_PATTERN_18 ^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0-2]\\d)|3[0-1])\\d{3}[0-9Xx]$; } 二创建isLegalIdCard方法 基础校验判断身份证位数是否位15位或18位、是否为空。 public static boolean isLegalIdCard(String identity) {if (identity null) { return false; } if (identity.length() 15) { return is15BitLegalIdCard(identity); } if (identity.length() 18) { return is18BitLegalIdCard(identity); } return false; } 三创建is15BitLegalIdCard方法 简易校验15位身份证号码是否合法年份、月份、日期和性别。 public static boolean is15BitLegalIdCard(String identity) { // 正则表达式用于初步格式检查 if (!identity.matches(IDENTITY_PATTERN_15)) { return false; } // 提取年份后两位、月份、日期和顺序码含性别码 String yearStr identity.substring(6, 8); String monthStr identity.substring(8, 10); String dayStr identity.substring(10, 12); String sequenceStr identity.substring(12, 15); // 检查年份是否在合理范围内1900-1999年的后两位 int year Integer.parseInt(yearStr); if (year 0 || year 99) { return false; } // 检查月份和日期是否在合理范围内 int month Integer.parseInt(monthStr); int day Integer.parseInt(dayStr); if (month 1 || month 12 || day 1 || day 31) { return false; } // 检查性别码第15位奇数为男性偶数为女性 int genderCode Integer.parseInt(sequenceStr.substring(sequenceStr.length() - 1));if (genderCode 0 || genderCode 9 ) { return false; } return true; } 四创建is18BitLegalIdCard方法 简易校验18位身份证号码是否合法校验码。 public static boolean is18BitLegalIdCard(String identity) { // 正则表达式用于初步格式检查 if (!identity.matches(IDENTITY_PATTERN_18)) { return false; } // 将字符串对象中的字符转换为一个字符数组 char[] chars identity.toCharArray(); long sum IntStream.range(0, 17).map(index - { char ch chars[index]; // 通俗理解digit()是个边界值判断不过边界返回字符数字本身数值超过边界即返回 -1. int digit Character.digit(ch, 10); int coefficient COEFFICIENT_ARRAY[index]; return digit * coefficient; }).summaryStatistics().getSum(); // 计算出的尾数索引 int mantissaIndex (int) (sum % 11); String mantissa IDENTITY_MANTISSA[mantissaIndex]; String lastChar identity.substring(17); return lastChar.equalsIgnoreCase(mantissa); } 五创建convert15To18BitIdCard方法 简易转换15位身份证号码转18位身份证号码。 public static String convert15To18BitIdCard(String identity) { if (!is15BitLegalIdCard(identity)) { throw new IllegalArgumentException(Invalid 15-bit ID card number); } // 提取各个部分 String regionCode identity.substring(0, 6); String year identity.substring(6, 8); String month identity.substring(8, 10); String day identity.substring(10, 12); String orderCode identity.substring(12); // 将年份扩展为四位 int yearInt Integer.parseInt(year); String extendedYear (yearInt 30 ? 19 : 20) year; // 组合成17位不含校验码 String idWithoutCheckCode regionCode extendedYear month day orderCode; // 计算校验码 int checkSum 0; for (int i 0; i 17; i) { checkSum Character.getNumericValue(idWithoutCheckCode.charAt(i)) * COEFFICIENT_ARRAY[i];} int mod checkSum % 11; String checkCode IDENTITY_MANTISSA[mod]; // 组合成18位 return idWithoutCheckCode checkCode; } 六创建测试类 package net.army.com.experiment.experiment03;import java.util.Scanner;/*** 功能身份证校验测试* 日期2024年11月16日* 作者梁辰兴*/ public class IDNumber {public static void main(String[] args) {Scanner sc new Scanner(System.in);while (true) {System.out.print(请输入身份证号码);String number sc.next();if (IdentityUtils.isLegalIdCard(number)) {if (IdentityUtils.is15BitLegalIdCard(number)) {System.out.println(身份证号码number 为标准15位身份证);String newNumber IdentityUtils.convert15To18BitIdCard(number);System.out.println(转换为18位标准身份证号码newNumber);break;} else if (IdentityUtils.is18BitLegalIdCard(number)) {System.out.println(身份证号码number 为标准18位身份证);break;}} else {System.out.println(number 不是合法身份证请重新输出);}}} } 运行测试 15位身份证号码示例 110105491231001 320322480630452 510104470101003 652923460229124 44052445071567818位身份证号码示例 11010519491231001X 320322194806304528 510104194701010032 652923194602291247 440524194507156789
http://www.hkea.cn/news/14542241/

相关文章:

  • 青岛做网站找哪家好WordPress手动切换主题
  • 微信上做网站手机网站例子
  • 温州网站建设开发品牌建设制度
  • 网站后台模板 php企业网站建设需要多钱
  • 网站抠图怎么做的wordpress用户站内信
  • 书法网站建站目标网站代码优化调整
  • 网站建设服务器介绍图片备案信息查询
  • 国外建站程序设计软件有哪些软件免费
  • 用jsp做的购物网站用自己服务器做网站
  • 佛山网站设计平台制作一个网站的一般步骤
  • 宁夏做网站好的公司在深圳如何注册公司
  • 网站开发制作软件百度竞价sem
  • centos nginx wordpress网站的优化策略
  • 实用网站设计步骤上海网站建设备案号怎么恢复
  • 小说网站如何赚钱精准扶贫网站建设的意义
  • 网站开发项目可行性网站建设大公司
  • 网站域名做入什么科目宝安在深圳算什么档次
  • 可以做动漫的网站做教育培训网站需要资质么
  • 听歌网站源码佛山设计公司
  • 凤翔网站建设如何查看网站空间大小
  • 旅游网站开发选题背景最好的赣州网站建设
  • 做网站不给源代码长沙企业建站按效果付费
  • 长沙网站优化怎么做做外贸在哪个平台比较好
  • windows2012iis网站默认设置如何建设营销型的网站
  • 西青做网站公司响应式网页设计针对的终端有
  • 和动物做的网站餐饮vi设计手册
  • 高平做网站企业拍摄宣传片制作
  • 网站降权不更新文章可以吗个人网站咋推广啥叫流量
  • 海口网站建设流程商河县做网站公司
  • 在线做生存曲线的网站有哪些我要自学网视频教程