`
liufeng063x
  • 浏览: 42211 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

身份证第18位(校验码)的计算方法

F# 
阅读更多
引用
身份证第18位(校验码)的计算方法 

  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。
  例如:某男性的身份证号码是34052419800101001X。我们要看看这个身份证是不是合法的身份证。
  首先我们得出前17位的乘积和是189,然后用189除以11得出的结果是17+2/11,也就是说其余数是2。最后通过对应规则就可以知道余数2对应的数字是x。所以,可以判定这是一个合格的身份证号码。

	/**
	 * 第二代身份证验证
	 * @param cardNum 18位身份证号
	 * @return
	 */
	public static boolean checkIDCardNum(String cardNum) {
		int len = cardNum.length();
		int[] iconst = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
		int[] m = {0,10,9,8,7,6,5,4,3,1,2};
		String f = "1234567890x";
		if ("".equals(cardNum) || len != 18) {
			return false;
		}else {
			String headStr = cardNum.substring(0, len - 1);
			String footStr = cardNum.substring(len - 1, len);
			int e = m[f.indexOf(footStr)];
		    if(!Pattern.compile("\\d*").matcher(headStr).matches()) return false;
		    char[] nums = headStr.toCharArray();
		    int rs = 0;
		    for (int i = 0; i < len - 1; i++) {
				int num = Integer.valueOf(String.valueOf(nums[i])).intValue();
				rs += (num * iconst[i]);
		    }
		    if ((rs % 11) != e) return false;
		    return true;
		}
	}
分享到:
评论

相关推荐

    18位身份证校验位计算方法

    本函数提供18位身份证校验位的计算方法,输入前17位即可得到第18位的校验码!

    JAVA验证身份证号码校验码是否正确.zip

    总结来说,Java验证身份证号码校验码是否正确的关键是理解身份证号码的构成规则和校验码的计算方法,然后编写相应的代码进行逻辑判断。通过上述方法,我们可以在Java程序中实现对身份证号码的准确验证,确保处理个人...

    身份证中第十八位数字的计算方法(源代码)

    ### 身份证中第十八位数字的计算方法 身份证号码在中国大陆地区是个人身份的重要标识,由18位数字组成。每一位置上的数字都承载着特定的信息意义,其中第18位数字尤为特殊,它被称为校验码,用于验证前17位数字的...

    身份证号码校验位的计算方法

    这篇文章将详细讲解身份证号码校验位的计算方法,并结合Delphi编程语言,介绍如何编写一个身份证号码校验工具。 身份证号码由18位数字组成,前17位分别代表出生年月日、性别、出生顺序号和区域代码。第18位是校验位...

    通过excel公共函数计算二代公民身份证号码末位校验码知识.pdf

    通过 Excel 公共函数计算二代公民身份证号码末位校验码是基于 GB 11643-1999 和 IOS 7064 的计算规则,用于计算 18 位身份证号码的最后一位校验码。该计算规则将身份证号码前 17 位数字按照特定的加权因子计算,最后...

    18位身份证标准的详细规定、校验位的计算方法

    - 计算公式:从右向左(包括校验码),第i位数字乘以对应的加权因子Wi(第18位至第1位的加权因子分别为7、9、10、5、8、4、2、1、6、3、7、9、10、5、4、2),然后将乘积累加。 - 累加和S除以11得到余数Y。 - ...

    身份证校验码方法-Java

    ### 二、校验码计算规则 #### 计算步骤: 1. 将前17位数字本体码按位分别乘以不同的系数(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2)。 2. 将得到的结果相加。 3. 用上述总和除以11,得到余数。 4. ...

    18位身份证校验

    用户可以输入18位身份证号码,程序会自动计算校验码并与输入的最后一位比较,如果一致则表明身份证号码有效,否则提示错误并显示正确的校验码。 在实际应用中,身份证校验广泛应用于各种领域,如银行开户、网络注册...

    C++身份证号码校验

    ### 二、校验码计算方法 校验码的计算方法如下: 1. 将前17位数字与对应的权重相乘后求和。 - 权重数组为 [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]。 - 计算公式为:\[ S = \sum_{i=0}^{16}(A_i ...

    PHP身份证校验码计算方法

    在中国大陆,公民使用的身份证...通过了解和应用这些PHP身份证校验码计算方法,开发者能够创建更加严谨的用户输入验证机制,确保数据的完整性和一致性。同时,这也是一种了解和实践中国身份证号码编码规则的好方式。

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

    在Java编程语言中,身份证号码的校验码计算是一个常见的需求,主要用于确保输入的18位身份证号码的有效性。这个算法主要应用于中国的居民身份证,它包含个人出生日期、性别、地区编码等信息,并通过特定的校验算法来...

    新18位身份证校验代码

    #### 三、校验码计算方法 校验码是根据前17位数字计算得出的一个值,用以验证整个身份证号码的合法性。具体的计算方法如下: 1. **确定加权因子**:定义一组加权因子数组`{7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, ...

    Oracle实现身份证校验功能

    #### 校验码计算方法 校验码的计算基于前17位数字,并利用特定的权重因子(2, 4, 8, 5, 10, 9, 7, 3, 6, 1, 2, 4, 8, 5, 10, 9, 7)与这些数字相乘后求和,然后除以11得到余数,再根据以下规则确定校验码: - 若余数...

    Linux shell编程 验证身份证号码(15/18)

    如果输入为15位,则进行转换成18位身份证号,涉及复杂的数学运算和校验码计算。 - **Part2**: 身份证号码验证函数`verify`,首先检查长度是否合法(15或18位),然后检查前17位是否符合规定的数字范围,接着对18位...

    用sql实现18位身份证校验代码分享 身份证校验位计算

    身份证号码的校验码计算基于特定的算法,该算法涉及到前17位数字与一系列系数的乘积之和,然后对结果进行模11运算。具体步骤如下: 1. **确定系数**:对于身份证号码的第i位(从1到17),对应的系数为[2^(18-i)]mod...

    身份证号码校验+解析源码

    2. 对前17位数字按以下权重进行加权求和:第一位乘以7,第二位乘以9,第三位乘以10,第四位乘以5,第五位乘以8,第六位乘以6,第七位乘以3,第八位乘以4,第九位乘以5,第十位乘以6,第十一位乘以7,第十二位乘以8,...

    计算身份证第18位,vb,excel两种计算方式

    在VB(Visual Basic)和Excel中,我们都可以通过编程来计算身份证的第18位校验码,以确保身份证号码的正确性。 在VB中,计算身份证校验位的过程大致如下: 1. **确定权重**:身份证前17位的每个数字都有对应的权重...

    java写的身份证号码校验类

    #### 三、校验码计算方法 根据国家标准GB/T 15837-2011《中华人民共和国公民身份号码》的规定,校验码的计算公式为: \[ W = \sum_{i=0}^{16}(a_i \times w_i) \] 其中: - \(a_i\) 表示第\(i+1\)位数字(\(0 \leq ...

    身份证校验

    校验码的计算方法如下: 1. 将前17位数字分别乘以不同的系数(从第一位到第十七位的系数依次为:7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2),然后将这些乘积相加。 2. 加法的结果与以下校验码对应表进行比较:0,1,2,3,4...

Global site tag (gtag.js) - Google Analytics