`

java数据算法,验证身份证号码的合法性

    博客分类:
  • JAVA
阅读更多
package com.anxin.test;

/**
 * 身份证验证规则: 第十八位数字(校验码)的计算方法为: 
 * 1.将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
 * 2.将这17位数字和系数相乘的结果相加。 
 * 3.用加出来和除以11,看余数是多少?
 * 4.余数只可能有0 1 2 3 4 5 6 7 8 9 10这11个数字。其分别对应的最后一位身份证的号码为1 0 X 9 8 7 6 5 4 3 2。
 * 5.通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2。
 * 
 * @author: (le.qiao)
 * @e-mail: qiaolevip@gmail.com
 * @myblog: <a href="http://qiaolevip.iteye.com">http://qiaolevip.iteye.com</a>
 * @date: 2012-10-18
 * 
 */
public class IdCard {

	public static void main(String[] args) {
		String cardNo = "360481197512040035"; // 36900119751204003X // 360481197512040035
		// 1.将身份证号码前面的17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
		int[] intArr = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
		int sum = 0;
		for (int i = 0; i < intArr.length; i++) {
			// 2.将这17位数字和系数相乘的结果相加。
			sum += Character.digit(cardNo.charAt(i), 10) * intArr[i];
			// System.out.println((cardNo.charAt(i) - '0') + " x " + intArr[i] + " = " + (cardNo.charAt(i) - '0') *
			// intArr[i]);
		}
		System.out.println("Totally sum:" + sum);
		// 3.用加出来和除以11,看余数是多少?
		int mod = sum % 11;
		System.out.println("Totally sum%11 = " + mod);
		// 4.余数只可能有0 1 2 3 4 5 6 7 8 9 10这11个数字。其分别对应的最后一位身份证的号码为1 0 X 9 8 7 6 5 4 3 2。
		int[] intArr2 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
		int[] intArr3 = { 1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2 };
		String matchDigit = "";
		for (int i = 0; i < intArr2.length; i++) {
			int j = intArr2[i];
			if (j == mod) {
				matchDigit = String.valueOf(intArr3[i]);
				if (intArr3[i] > 57) {
					matchDigit = String.valueOf((char) intArr3[i]);
				}
			}
		}

		if (matchDigit.equals(cardNo.substring(cardNo.length() - 1))) {
			System.out.println("ID Card Verify Sucsess!");
		} else {
			System.out.println("ID Card Verify Faild!");
		}

		// 5.通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2。
	}
}

分享到:
评论
1 楼 caipeiming 2016-05-07  

相关推荐

    Java身份证号码合法性校验算法,正则表达式。

    最完善的身份证号码合法性校验Java算法,适合Android平台,可以直接拿来在项目中使用,正则表达式。

    JAVA+jsp身份证验证的合法性

    在Java Web开发中,使用JSP(JavaServer Pages)结合Java后端逻辑,我们可以实现对身份证合法性的有效验证。本文将详细讲解如何在JAVA+jsp环境下进行身份证验证。 首先,我们需要理解身份证号码的构成。中国居民...

    验证身份证的合法性

    在工具有关的方面,许多编程语言如Python、Java等都有现成的身份证验证库,可以直接调用进行身份证合法性验证,如Python的`idutils`库。这些库通常已经实现了上述的校验规则,开发者只需简单调用即可。 在邮件发送...

    java验证身份证有效性函数类

    根据中国公民身份证号码算法 实现验证身份证号码合法性 已实现java类函数 可直接调用即可 非常方便实用

    验证身份证号码.rar

    在进行系统开发或数据分析时,验证身份证号码的正确性是至关重要的,可以确保信息的准确性和安全性。本压缩包文件"验证身份证号码.rar"可能包含相关的代码示例、算法说明或者教程资料,帮助我们理解和实现身份证号码...

    身份证验证系统 java

    身份证验证系统通常用于确认个人身份的合法性,它通过特定算法和数据库查询来验证身份证号码是否真实有效。Java作为编程语言,是实现这一系统的基础。 首先,身份证验证涉及到的是中国公民身份证号码的编码规则。...

    java 身份证验证程序

    在Java编程领域,身份证验证程序是一个实用的工具,它能够检查输入的身份证号码是否符合中国的身份证格式,并从中提取出如年龄、性别和籍贯等信息。以下是对这个主题的详细阐述: 身份证号码验证首先需要理解中国...

    java身份证验证代码实现

    java身份证验证代码实现可以用于验证身份证号码的合法性和正确性。 身份证号码的组成部分包括省份代码、出生日期、顺序号码和校验码等。其中,省份代码是身份证号码的前两位数字,用于标识身份证持有人的居住省份或...

    java ip,身份证等接口查询所在地

    此外,如果需要验证身份证号码的合法性,可以使用Java编写算法检查其校验码是否正确,这涉及到对身份证号码的数学计算和模运算。 总结来说,Java可以通过第三方库实现IP地址的地理位置查询,同时可以通过身份证号码...

    【GIS应用】自定义转换器-使用FME验证身份证号码.zip

    本主题主要探讨如何利用FME来创建一个自定义转换器,专门用于验证身份证号码的合法性。 身份证号码在中国是个人身份的重要标识,由18位数字组成,包含了出生日期、性别、地区代码等信息。在GIS数据处理中,确保...

    java写的身份证号码校验类

    本篇介绍了一个简单的Java实现,用于校验中国大陆身份证号码的合法性。通过对身份证号码结构的分析以及校验码计算公式的推导,我们能够确保身份证号码的有效性和准确性。这种校验方法广泛应用于各种系统中,确保用户...

    正则表达式校验身份证号码

    通过以上介绍,我们可以看到使用正则表达式进行身份证号码的简单校验是一种快速有效的方法,而复杂的校验则能够进一步确保身份证号码的合理性和合法性。在实际应用中,可以根据不同的需求选择合适的校验策略。

    一个 java 校验身份证号码的,很强的

    标题中的“一个 Java 校验身份证号码的,很强的”指的是使用 Java 语言编写的身份验证工具,用于检查中国大陆居民的身份证号码(身份证18位)的合法性。在 Java 开发中,这样的工具可以帮助程序员快速验证输入数据的...

    java身份证验证

    它通常包含一系列方法来检查身份证号码的合法性,包括但不限于: 1. **长度检查**:中国居民身份证号码为18位,因此验证的第一步是确保输入的字符串长度为18。 2. **校验码计算**:身份证号码的第18位是校验码,...

    JAVA 18位身份证号码校验码的算法

    在Java编程中,身份证号码的校验码是用于验证身份证号码正确性的重要组成部分。18位身份证号码由17位数字和1位校验码组成,校验码的计算遵循特定的算法。以下是对给定代码的详细解释,以及如何理解和实现这个算法。 ...

    java以及JavaScript的香港身份证验证方法。.pdf

    - Java 和 JavaScript 代码中都通过 `sum % 11 == 0` 来判断总和是否能被11整除,以确定身份证号码的合法性。 这两个版本的验证方法虽然语言不同,但实现逻辑是一致的,都是通过计算身份证号码的加权和来验证其...

    android java 共用的身份证校验

    在Android和Java开发中,对身份证号码进行合法性校验是一项常见的需求。这涉及到中国的公民身份号码验证,确保输入的身份号码符合国家规定的格式和规则。在中国,身份证号码是18位的数字,包含了个人的出生日期、...

    身份证号码验证算法深入研究和Java实现

    在Java编程中,我们可以实现一个身份证号码验证函数来检查身份证号码的合法性。下面将详细介绍18位身份证号码的结构以及如何用Java实现验证算法。 首先,18位身份证号码的结构如下: 1. **地址码**:前6位,代表...

Global site tag (gtag.js) - Google Analytics