import java.util.Calendar; import java.util.Scanner; public class ValidateID { // 记录信息 private String info = "地区:"; public static void main(String[] args) { System.out.println("输入身份证号码:"); Scanner sc = new Scanner(System.in); String id = sc.nextLine(); new ValidateID().validateLastNum(id); } /* * 关于身份证号码最后一位的校验码的算法如下: ∑(a[i]*W[i]) mod 11 ( i = 2, 3, ..., 18 ) "*" : * 表示乘号 i: 表示身份证号码每一位的序号,从右至左,最左侧为18,最右侧为1。 a[i]: 表示身份证号码第 i 位上的号码 W[i]: 表示第 * i 位上的权值 W[i] = 2^(i-1) mod 11 设:R = ∑(a[i]*W[i]) mod 11 ( i = 2, 3, ..., * 18 ) C = 身份证号码的校验码 则R和C之间的对应关系如下表: R:0 1 2 3 4 5 6 7 8 9 10 C:1 0 X 9 8 7 * 6 5 4 3 2 由此看出 X 就是 10,罗马数字中的 10 就是X,所以在新标准的身份证号码中可能含有非数字的字母X。 */ public boolean validateLastNum(String strId) { // 判断身份证是否为18位 if (strId.length() != 18) { return false; } // 把String转换为StringBuffer是为了用到reverse()方法 StringBuffer sb = new StringBuffer(strId); // 字符串反转 sb.reverse(); // 转回来,便于操作 String id = new String(sb); // 如果含有非数字,则直接返回false退出 try { Long.parseLong(id); } catch (Exception e) { // System.out.println("该字符串只能是数字"); return false; } // 下面算法遵照上面的公式 int sum = 0; int C = 0; int[] W = new int[17]; int[] a = new int[17]; for (int i = 2; i < 19; i++) { W[i - 2] = (int) (Math.pow(2, i - 1) % 11); a[i - 2] = Integer.parseInt(id.substring(i - 1, i)); sum += (a[i - 2] * W[i - 2]); } int R = sum % 11; // 将上面得到的结果,根据R:C对应关系,做如下转换 if (R == 0) { C = 1; } if (R == 1) { C = 0; } if (R == 2) { C = 10; } if (R > 2) { C = 12 - R; } // 截取第一个字符,即转换前的最后一个字符 String lastChar = id.substring(0, 1); // 将截取的字符转换成数字 int lastNum = Integer.parseInt(lastChar); // 判断身份证的最后个字符和计算得到的数据做比较,如果相等则正确,反之错误 if (lastNum != C) { // 由于R=2对应C=10,而10在身份证中用X表示,所以可通过验证下面两个条件是否同时满足来判断 if (C == 10 && lastChar.equals("X")) { // System.out.println("身份证通过校验码验证"); return true; } // System.out.println("身份证未能通过校验码验证"); return false; } // System.out.println("身份证通过校验码验证"); return true; } }
您还没有登录,请您登录后再发表评论
最完善的身份证号码合法性校验Java算法,适合Android平台,可以直接拿来在项目中使用,正则表达式。
公民身份号码是由17位数字码和1位校验码组成。排列顺序从左至右分别为:6位地址码,8位出生日期码,3位顺序码和1位校验码。 地址码(身份证地址码对照表见...身份证号码解密|身份证尾数校验码算法|ID card information
身份证号码验证算法 (一) 18身份证号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。 排列顺序从左至右依次为:六位数字地址码 + 八位数字出生日期码 + 三位数字顺序码 + 一位校验码。...
java实现的18位身份证格式验证算法
中国居民身份证校验码算法: 将身份证号码前面的17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。 将这17位数字和系数相乘的结果相加。 用加...
对于其它的语言也有不少的身份证验证了,这里的代码效果更简单
用C语言写的一个小工具,根据国标算法检验校验身份证号码真伪,只校验身份证号码,不检查信息。
主要介绍了身份证号码验证算法深入研究和Java实现,本文讲解了18身份证号码的结构、根据17位数字本体码获取最后一位校验码程序实例等内容,需要的朋友可以参考下
公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
JS常用工具函数(压缩包中含有MD文件可自行查看)--包含:通用格式化时间、字符串验证-验证邮箱、手机号、电话号码、url地址、严格校验身份证号码,判断数据类型-是否是字符串、数字、Boolean、函数、对象、数组...
根据中国公民身份证号码算法 实现验证身份证号码合法性 已实现java类函数 可直接调用即可 非常方便实用
本作品是一个通用的身份证号码校验系统,目前已经尝试在Linux和Windows系统下运行,结果均可达到理想效果。系统通过运用基础GUI库tkinter创建系统兼容性极高的可视化界面。通过数据结构算法对身份证号码进行分析和...
内容索引:VB源码,字符处理,身份证 身份证号码位数及格式验证范例VB版,能够按照身份证号码所规定的格式进行验证,比如代表区域性的前五位是否正确,代表出生日期的是否正确,以及最后位及总位数是否正确等做出合法...
C# 源码 判断 身份证号 有效性 包含:长度 校验位 出生日期 省份 等判断算法
由于响应速度极快,可以肯定不是联机校验正确性的,那也就是说第二代身份证除了大家都知道的几位表示生日和性别的规则以外,还有另外的自我校验规则。于是翻开页面源码查看,发现这段js没有被压缩,所以规则也很好懂...
开发中,有时候,为了打造更好的用户体验,同时减轻服务器端的压力,需要对于一些如,手机号码,银行卡号,身份证号码进行格式校验 下面是判断银行卡号输入是否正确的代码(基于Luhn算法的格式校验): iOS代码: /...
它是一种简单的校验公式,一般会被用于身份证号码,IMEI号码,美国供应商识别号码,或是加拿大的社会保险号码的验证。该算法是由IBM的科学家Hans Peter Luhn所创造,于1954年1月6日提出该专利的申请,并于1960年8月...
#实现的18位身份证格式验证算法 身份证15To18 的算法(C#) 一组 正则表达式 静态构造函数 忽略大小写Replace效率瓶颈IndexOf 随机排列算法 理解C#中的委托[翻译] 利用委托机制处理.NET中的异常 与正则表达式相关的几...
• 利用MOD 函数生成数字校验码 • 利用MOD 函数实现培训反馈表中票数求和 • 利用取舍函数生成重复个数的自然数序列 • 按照特定条件进行取舍计算 • 利用取舍函数解决四舍六入问题 • 产生50~100 的随机整数 • ...
相关推荐
最完善的身份证号码合法性校验Java算法,适合Android平台,可以直接拿来在项目中使用,正则表达式。
公民身份号码是由17位数字码和1位校验码组成。排列顺序从左至右分别为:6位地址码,8位出生日期码,3位顺序码和1位校验码。 地址码(身份证地址码对照表见...身份证号码解密|身份证尾数校验码算法|ID card information
身份证号码验证算法 (一) 18身份证号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。 排列顺序从左至右依次为:六位数字地址码 + 八位数字出生日期码 + 三位数字顺序码 + 一位校验码。...
java实现的18位身份证格式验证算法
中国居民身份证校验码算法: 将身份证号码前面的17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。 将这17位数字和系数相乘的结果相加。 用加...
对于其它的语言也有不少的身份证验证了,这里的代码效果更简单
用C语言写的一个小工具,根据国标算法检验校验身份证号码真伪,只校验身份证号码,不检查信息。
主要介绍了身份证号码验证算法深入研究和Java实现,本文讲解了18身份证号码的结构、根据17位数字本体码获取最后一位校验码程序实例等内容,需要的朋友可以参考下
公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
JS常用工具函数(压缩包中含有MD文件可自行查看)--包含:通用格式化时间、字符串验证-验证邮箱、手机号、电话号码、url地址、严格校验身份证号码,判断数据类型-是否是字符串、数字、Boolean、函数、对象、数组...
根据中国公民身份证号码算法 实现验证身份证号码合法性 已实现java类函数 可直接调用即可 非常方便实用
本作品是一个通用的身份证号码校验系统,目前已经尝试在Linux和Windows系统下运行,结果均可达到理想效果。系统通过运用基础GUI库tkinter创建系统兼容性极高的可视化界面。通过数据结构算法对身份证号码进行分析和...
内容索引:VB源码,字符处理,身份证 身份证号码位数及格式验证范例VB版,能够按照身份证号码所规定的格式进行验证,比如代表区域性的前五位是否正确,代表出生日期的是否正确,以及最后位及总位数是否正确等做出合法...
C# 源码 判断 身份证号 有效性 包含:长度 校验位 出生日期 省份 等判断算法
由于响应速度极快,可以肯定不是联机校验正确性的,那也就是说第二代身份证除了大家都知道的几位表示生日和性别的规则以外,还有另外的自我校验规则。于是翻开页面源码查看,发现这段js没有被压缩,所以规则也很好懂...
开发中,有时候,为了打造更好的用户体验,同时减轻服务器端的压力,需要对于一些如,手机号码,银行卡号,身份证号码进行格式校验 下面是判断银行卡号输入是否正确的代码(基于Luhn算法的格式校验): iOS代码: /...
它是一种简单的校验公式,一般会被用于身份证号码,IMEI号码,美国供应商识别号码,或是加拿大的社会保险号码的验证。该算法是由IBM的科学家Hans Peter Luhn所创造,于1954年1月6日提出该专利的申请,并于1960年8月...
#实现的18位身份证格式验证算法 身份证15To18 的算法(C#) 一组 正则表达式 静态构造函数 忽略大小写Replace效率瓶颈IndexOf 随机排列算法 理解C#中的委托[翻译] 利用委托机制处理.NET中的异常 与正则表达式相关的几...
• 利用MOD 函数生成数字校验码 • 利用MOD 函数实现培训反馈表中票数求和 • 利用取舍函数生成重复个数的自然数序列 • 按照特定条件进行取舍计算 • 利用取舍函数解决四舍六入问题 • 产生50~100 的随机整数 • ...