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平台,可以直接拿来在项目中使用,正则表达式。
根据提供的信息,我们可以详细解析与C#中国身份证验证相关的知识点,包括省份验证和校验码验证,确保符合GB11643-1999标准。 ### 一、身份证号码结构 中国的身份证号码有两种格式:15位和18位。 #### 15位身份证...
最后,通过Luhn算法(也称模10算法)计算校验码,与输入的校验码进行对比,以确认整个身份证号码的合法性。 Luhn算法的步骤如下: 1. 从右侧开始,每隔一个数字双倍计算,遇到双位数时,只取个位。 2. 将所有数字...
学习和理解这样的源码,不仅可以加深对身份证校验码算法的理解,还能提升编程能力,尤其是对数值计算、字符串处理和异常处理等方面的掌握。同时,通过阅读和分析他人的代码,有助于培养良好的编程习惯,提高代码质量...
总之,了解并实现这个身份证号码的校验码算法对于Java开发者来说是非常有用的,它可以帮助我们处理与身份证相关的业务逻辑,并确保数据的准确性。同时,配合其他验证技术,如正则表达式,可以进一步提升系统的安全性...
公民身份号码是由17位数字码和1位校验码组成。排列顺序从左至右分别为:6位地址码,8位出生日期码,3位顺序码和1位校验码。 地址码(身份证地址码对照表见...身份证号码解密|身份证尾数校验码算法|ID card information
身份证号码验证算法 (一) 18身份证号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。 排列顺序从左至右依次为:六位数字地址码 + 八位数字出生日期码 + 三位数字顺序码 + 一位校验码。...
一个有效的18位身份证号码由6位地区代码、8位出生日期码和3位顺序码(奇数年出生的男性为偶数,偶数年出生的男性为奇数,女性反之)组成,最后一位是校验码,通过特定算法计算得出,确保了号码的唯一性和准确性。...
身份证验证程序的核心是校验码的计算。校验码的计算方法如下: 1. 将前17位数字分别乘以不同的系数(系数为:7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2),然后求和。 2. 将求和结果对11取模,得到余数。 3. 根据余数...
身份证验证算法是计算机编程中一个常见的实用功能,特别是在处理个人数据和进行实名认证的场景下。在Java中实现18位身份证格式验证涉及到多个步骤,主要包括:校验位计算、出生日期转换以及地区编码验证。下面将详细...
在中华人民共和国居民身份证中,这个校验码是由前17位数字经过特定算法计算得出的,用于验证整个身份证号码的合法性。在本案例中,提供的“身份证校验码查询工具”是一个`.bat`批处理文件,可以便捷地帮助用户计算...
5. **校验码检查**:使用Luhn算法或专门的身份证校验公式计算出校验码,并与输入的校验码进行对比。 在JSP页面上,我们可以通过表单收集用户输入的身份证号码,然后通过AJAX异步提交到后台处理。后台Java程序接收到...
4. **CommonValidation.js**:这个文件可能是包含通用验证功能的JavaScript库,可能包含了多种数据验证方法,如邮箱、手机号码等,身份证验证只是其中之一。这种模块化的设计使得代码更易于复用和维护。 5. **...
2. **18位身份证验证**:除了检查15位的规则外,还需验证校验码的正确性。 #### C#代码示例 在提供的代码片段中,定义了两个方法`CheckIDCard15`和`CheckIDCard18`来分别验证15位和18位身份证号码的有效性。具体...
虽然正则表达式能够解决大部分问题,但对于复杂的校验逻辑,如计算校验码等,则需要额外的算法支持。总之,在实际应用中结合业务需求进行适当的调整和扩展是非常必要的。 希望本文能帮助大家更好地理解和运用...
校验码的计算依据ISO 7064:1983 MOD 11-2算法,步骤如下: - 定义一个权重数组`arrInt`,用于与身份证号码前17位进行相乘。 - 定义一个校验码数组`arrCh`,根据加权求和的结果得到校验码。 - 计算加权和,并根据...
4. **校验码对比**:最后,比较计算出的校验码与输入身份证号的最后一位是否一致。 ```java public boolean isCheckCodeValid(String id) { String calculatedCheckCode = calculateCheckCode(id.substring(0, 17)...
这涉及到对身份证号码结构的理解,包括地区码、出生日期码、顺序码和校验码。开发者需要编写算法来检查每个部分是否符合国家规定的规则。 3. **正则表达式**: 在C#中,正则表达式是一种强大的文本匹配工具,常用于...
4. **校验码(第18位)**:用于验证身份证号码的有效性,采用特定的计算方法得出。 #### 三、身份证号码校验算法 1. **前17位加权求和** - 公式为:\( S = \sum_{i=0}^{16}(A_i \times W_i) \),其中 \( A_i \) ...
相关推荐
最完善的身份证号码合法性校验Java算法,适合Android平台,可以直接拿来在项目中使用,正则表达式。
根据提供的信息,我们可以详细解析与C#中国身份证验证相关的知识点,包括省份验证和校验码验证,确保符合GB11643-1999标准。 ### 一、身份证号码结构 中国的身份证号码有两种格式:15位和18位。 #### 15位身份证...
最后,通过Luhn算法(也称模10算法)计算校验码,与输入的校验码进行对比,以确认整个身份证号码的合法性。 Luhn算法的步骤如下: 1. 从右侧开始,每隔一个数字双倍计算,遇到双位数时,只取个位。 2. 将所有数字...
学习和理解这样的源码,不仅可以加深对身份证校验码算法的理解,还能提升编程能力,尤其是对数值计算、字符串处理和异常处理等方面的掌握。同时,通过阅读和分析他人的代码,有助于培养良好的编程习惯,提高代码质量...
总之,了解并实现这个身份证号码的校验码算法对于Java开发者来说是非常有用的,它可以帮助我们处理与身份证相关的业务逻辑,并确保数据的准确性。同时,配合其他验证技术,如正则表达式,可以进一步提升系统的安全性...
公民身份号码是由17位数字码和1位校验码组成。排列顺序从左至右分别为:6位地址码,8位出生日期码,3位顺序码和1位校验码。 地址码(身份证地址码对照表见...身份证号码解密|身份证尾数校验码算法|ID card information
身份证号码验证算法 (一) 18身份证号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。 排列顺序从左至右依次为:六位数字地址码 + 八位数字出生日期码 + 三位数字顺序码 + 一位校验码。...
一个有效的18位身份证号码由6位地区代码、8位出生日期码和3位顺序码(奇数年出生的男性为偶数,偶数年出生的男性为奇数,女性反之)组成,最后一位是校验码,通过特定算法计算得出,确保了号码的唯一性和准确性。...
身份证验证程序的核心是校验码的计算。校验码的计算方法如下: 1. 将前17位数字分别乘以不同的系数(系数为:7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2),然后求和。 2. 将求和结果对11取模,得到余数。 3. 根据余数...
身份证验证算法是计算机编程中一个常见的实用功能,特别是在处理个人数据和进行实名认证的场景下。在Java中实现18位身份证格式验证涉及到多个步骤,主要包括:校验位计算、出生日期转换以及地区编码验证。下面将详细...
在中华人民共和国居民身份证中,这个校验码是由前17位数字经过特定算法计算得出的,用于验证整个身份证号码的合法性。在本案例中,提供的“身份证校验码查询工具”是一个`.bat`批处理文件,可以便捷地帮助用户计算...
5. **校验码检查**:使用Luhn算法或专门的身份证校验公式计算出校验码,并与输入的校验码进行对比。 在JSP页面上,我们可以通过表单收集用户输入的身份证号码,然后通过AJAX异步提交到后台处理。后台Java程序接收到...
4. **CommonValidation.js**:这个文件可能是包含通用验证功能的JavaScript库,可能包含了多种数据验证方法,如邮箱、手机号码等,身份证验证只是其中之一。这种模块化的设计使得代码更易于复用和维护。 5. **...
2. **18位身份证验证**:除了检查15位的规则外,还需验证校验码的正确性。 #### C#代码示例 在提供的代码片段中,定义了两个方法`CheckIDCard15`和`CheckIDCard18`来分别验证15位和18位身份证号码的有效性。具体...
虽然正则表达式能够解决大部分问题,但对于复杂的校验逻辑,如计算校验码等,则需要额外的算法支持。总之,在实际应用中结合业务需求进行适当的调整和扩展是非常必要的。 希望本文能帮助大家更好地理解和运用...
校验码的计算依据ISO 7064:1983 MOD 11-2算法,步骤如下: - 定义一个权重数组`arrInt`,用于与身份证号码前17位进行相乘。 - 定义一个校验码数组`arrCh`,根据加权求和的结果得到校验码。 - 计算加权和,并根据...
4. **校验码对比**:最后,比较计算出的校验码与输入身份证号的最后一位是否一致。 ```java public boolean isCheckCodeValid(String id) { String calculatedCheckCode = calculateCheckCode(id.substring(0, 17)...
这涉及到对身份证号码结构的理解,包括地区码、出生日期码、顺序码和校验码。开发者需要编写算法来检查每个部分是否符合国家规定的规则。 3. **正则表达式**: 在C#中,正则表达式是一种强大的文本匹配工具,常用于...
4. **校验码(第18位)**:用于验证身份证号码的有效性,采用特定的计算方法得出。 #### 三、身份证号码校验算法 1. **前17位加权求和** - 公式为:\( S = \sum_{i=0}^{16}(A_i \times W_i) \),其中 \( A_i \) ...